这道题正解其实是LCT,然而貌似SPFA也可以成功水过,所以根本不知道LCT的我只能说SPFA了。

  这道题最大的限制是两种精灵就意味着一条道可能有两个权值,因此我们需要去将其中一个固定,然后再推另一个权值,也就是说,我们可以,枚举每一条边的a,然后只走a值不大于他的边。

  然而并没有那么容易,本题数据极大,这种算法一半分都拿不到,因此我们需要别的优化,首先,我们可以现将每个边按照a的大小进行排序,然后从小到大边枚举边加边,这时dis数组就不必去每次spfa都清空了,而且每次枚举边都可以在原来的图的基础上直接加边,且当前边一定都是能走的边,不必再算上那些不满足要求的边了,可以大大地优化是时间复杂度。

  

 #include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<string>
#include<cmath>
using namespace std;
int n,m,zz,a[];
struct ro{
int to,from;
int next;
int a,b;
}road[];
struct no{
int a,b,from,to;
}node[];
void build(int x,int y,int z,int zx)
{
zz++;
road[zz].from=x;
road[zz].to=y;
road[zz].next=a[x];
road[zz].a=z;
road[zz].b=zx;
a[x]=zz;
}
int dis[];
queue<int> q1;
bool rd[];
int ans=0x7fffffff;
void spfa(int x0,int y0,int z,int zx){
rd[x0]=rd[y0]=;
q1.push(x0);
q1.push(y0);
while(!q1.empty())
{
int x=q1.front();
q1.pop();
rd[x]=;
for(int i=a[x];i>;i=road[i].next)
{
int y=road[i].to; if(dis[y]>max(dis[x],road[i].b))
{
dis[y]=max(dis[x],road[i].b);
if(!rd[y])
{
q1.push(y);
rd[y]=;
}
}
}
}
int an=;
an=dis[n];
if(an!=dis[]&&ans>an+z)
ans=an+z;
}
int px(no a,no b)
{
return a.a<b.a;
}
int main(){
memset(dis,0x7f,sizeof(dis));
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int x,y,z,zx;
scanf("%d%d%d%d",&x,&y,&z,&zx);
node[i].a=z;
node[i].b=zx;
node[i].to=y;
node[i].from=x;
}
sort(node+,node+m+,px);
dis[]=,rd[]=;
q1.push();
for(int i=;i<=m;i++)
{
int bj=i;
build(node[i].from,node[i].to,node[i].a,node[i].b);
build(node[i].to,node[i].from,node[i].a,node[i].b);
spfa(node[i].from,node[i].to,node[i].a,node[i].b);
}
if(ans==0x7fffffff) ans=-;
printf("%d\n",ans);
// while(1);
return ;
}

[NOI2014]魔法森林题解的更多相关文章

  1. NOI2014魔法森林题解报告

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,-,n,边标号为 1,2,3,-, ...

  2. BZOJ3669:[NOI2014]魔法森林——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3669 https://www.luogu.org/problemnew/show/P2387 为了得 ...

  3. [NOI2014]魔法森林 LCT

    题面 [NOI2014]魔法森林 题解 一条路径的代价为路径上的\(max(a[i]) + max(b[i])\),因为一条边同时有$a[i], b[i]$2种权值,直接处理不好同时兼顾到,所以我们考 ...

  4. NOI2014 魔法森林

    3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 106  Solved: 62[Submit][Status] ...

  5. bzoj 3669: [Noi2014]魔法森林

    bzoj 3669: [Noi2014]魔法森林 Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号 ...

  6. 「luogu2387」[NOI2014] 魔法森林

    「luogu2387」[NOI2014] 魔法森林 题目大意 \(n\) 个点 \(m\) 条边的无向图,每条边上有两个权值 \(a,b\),求从 \(1\) 节点到 \(n\) 节点 \(max\{ ...

  7. bzoj 3669: [Noi2014]魔法森林 动态树

    3669: [Noi2014]魔法森林 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 363  Solved: 202[Submit][Status] ...

  8. BZOJ 3669: [Noi2014]魔法森林( LCT )

    排序搞掉一维, 然后就用LCT维护加边MST. O(NlogN) ------------------------------------------------------------------- ...

  9. BZOJ_3669_[Noi2014]魔法森林_LCT

    BZOJ_3669_[Noi2014]魔法森林_LCT Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节 ...

随机推荐

  1. TIME WINAPI

    GetDynamicTimeZoneInformation https://msdn.microsoft.com/en-us/library/windows/desktop/ms724318(v=vs ...

  2. scons编译mongodb(vs2008版本)遇到的问题总结

    OS:win7 64 boost:1.49 mongodb:2.4.6(推荐64位版本,当然如果你系统是32位的,只能使用32的版本了) IDE:vs2008(2010的同学请跳过吧,因为官网提供的就 ...

  3. 解析 Qt 字库移植并能显示中文 (上篇)

    原文http://mobile.51cto.com/symbian-272552.htm 本文介绍的是Qt 字库移植并能显示中文,需要的字体库文件,一般是多个.具体移植那一个,看你使用的字库是什么了, ...

  4. Delphi url 编码及转码及特殊字符串替换--百度和腾讯用的就是这个

    先介绍一下,Delphi中处理Google的URL编码解码,其中就会明白URL编码转换的方法的 从delphi的角度看Google(谷歌)URL编码解码方式 在网上搜索了一下,似乎没有什么关于goog ...

  5. How To Compile Qt with Visual Studio

    How To Compile Qt with Visual Studio FEBRUARY 1, 2011 This post is a step-by-step guide on how to co ...

  6. C语言宏定义##连接符和#符的使用(MFC就是靠##自动把消息和消息函数对应起来了,借助宏来减少switch case代码的编写量)

    C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关于#和## 在C语言的宏中,#的功能是将其后面 ...

  7. better later than never

    工作一年半,写程序也有几年了,终于开了个博客,记录一下遇到的问题和解决方法,和其他需要记录的东西.希望自己不会懒……已经开通两周了才开始写,唉……

  8. 你所忽略的,覆盖equals时需要注意的事项《effective java》

    我们都知道Object的equals的比较其实就是==的比较,其实是内存中的存放地址的比较.正常逻辑上:类的每个实例本质上都是唯一的. 在工作中我们实际的业务逻辑往往有可能出现一些相对特殊的需求需要对 ...

  9. SpringBoot项目多数据源配置

    博主总结的不错,事务也考虑到了,存一下: https://blog.csdn.net/xqnode/article/details/86498507

  10. .net core 杂记:WebAPI的XML请求和响应

    一般情况下,restfult api  进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求 对于返回XML,普通常见的方式就是在每个aciton方法进行诸如X ...