时间限制: 1 s
 空间限制: 32000 KB
 题目等级 : 黄金 Gold
题目描述 Description

现在,黎恒健与YJY由于身处异地,非常迫切地想在最短的时间内相遇,然后干一架。但是由于双方都在努力地编程序想干掉对方,所以他们希望你来帮他们找到一个最好的方案使得相遇的时间最短。
     在此我们定义"相遇"为:两个人皆在同一个有编号的星球上就可以了,并且这两个人均可以站在原地等另外一个人。也就是说,在这里我们不考虑两人在宇宙中间相遇。

输入描述 Input Description

输入数据第一行:N和M(用空格隔开) 表示这是一个N个点的图并且有M条边
第二行到第M+1行 为这个图的详细信息。
    每行共有被空格隔开的三个数:a b c。表示编号为a的星球到编号为b的星球
    有一个双向边,并且要过这条双向边所需要花费的时间为c。
最后一行有两个数:Y和T,Y表示黎恒健所在星球(也就是月球),T表示YJY所处的
星球(也就是天狼星)

输出描述 Output Description

输出只有一行,D,表示二者"相遇"的最短时间。当然,如果无法相遇则输出"They are all died!"

样例输入 Sample Input

3 3

1 2 1

2 3 1

1 3 1

1 3

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

[数据范围]每组都是n=5000 m=5000 并且保证运算过程中的所有值都不会超过117901063

 
以黎恒健为原点做 dijkstra
以YJY为原点做 djikstra
答案=min(max(dis1[i],dis2[i]));
#include <cstring>
#include <cstdio>
#include <queue>
#define N 5005
using namespace std;
bool vis[N];
int n,m,S,T,cnt,ans=0x7fffffff,far[][N],to[N<<],val[N],head[N],nextt[N<<];
struct node
{
int x,y;
bool operator<(node a)const
{
return y>a.y;
}
};
priority_queue<node>q;
void dijkstra(int s,int *dis)
{
memset(vis,,sizeof(vis));
for(int i=;i<=n;++i) dis[i]=0x7fffffff;
dis[s]=;
q.push((node){s,dis[s]});
for(node now;!q.empty();)
{
now=q.top();q.pop();
if(vis[now.x]) continue;
vis[now.x]=true;
for(int i=head[now.x];i;i=nextt[i])
{
int v=to[i];
if(dis[v]>dis[now.x]+val[i])
{
dis[v]=dis[now.x]+val[i];
if(!vis[v]) q.push((node){v,dis[v]});
}
}
}
}
inline int min(int a,int b) {return a>b?b:a;}
inline int max(int a,int b) {return a>b?a:b;}
inline void ins(int u,int v,int w)
{
nextt[++cnt]=head[u];to[cnt]=v;val[cnt]=w;head[u]=cnt;
nextt[++cnt]=head[v];to[cnt]=u;val[cnt]=w;head[v]=cnt;
}
int main(int argc,char *argv[])
{
scanf("%d%d",&n,&m);
for(int a,b,c;m--;)
{
scanf("%d%d%d",&a,&b,&c);
ins(a,b,c);
}
scanf("%d%d",&S,&T);
dijkstra(S,far[]);
dijkstra(T,far[]);
for(int i=;i<=n;++i) ans=min(ans,max(far[][i],far[][i]));
ans!=0x7fffffff?printf("%d\n",ans):printf("They are all died!");
return ;
}

codevs 4052 黎恒健大战YJY的更多相关文章

  1. codevs 3289 花匠

    题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...

  2. 3D坦克大战游戏源码

    3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...

  3. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  4. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  5. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  6. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  7. codevs 1228 苹果树 树链剖分讲解

    题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...

  8. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  9. codevs 1052 地鼠游戏

    1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...

随机推荐

  1. 在Android中使用Protocol Buffers(中篇)

    本文来自网易云社区. FlatBuffers 编码原理 FlatBuffers的Java库只提供了如下的4个类: ./com/google/flatbuffers/Constants.java ./c ...

  2. SAS笔记(4) FIRST.和LAST.临时变量

    FIRST.和LAST.临时变量是SAS很有特色的一点,我在R和Python中暂时没有发现类似的功能(也许它们也有这个功能,我不知道而已).考虑这样一种场景:我们有患者就诊的数据,每一条观测对应一个患 ...

  3. Linux基础学习(一)

    前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...

  4. Java 8 Optional类使用的实践经验

    前言 Java中空指针异常(NPE)一直是令开发者头疼的问题.Java 8引入了一个新的Optional类,使用该类可以尽可能地防止出现空指针异常. Optional 类是一个可以为null的容器对象 ...

  5. ERROR: Unable to globalize '/usr/local/NONE/etc/php-fpm.d/*.conf' (ret = 2) from /usr/local/etc/php-fpm.conf at line WARNING: Nothing matches the include pattern '/usr/local/php7/etc/php-fpm.d/*.conf'

    Building from source is not easy if something is a bit different, and I had a hard time with some di ...

  6. python大战机器学习——半监督学习

    半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数.它是一类可以自动地利用未标记的数据来提升学习性能的算法 1.生成式半监督学习 优点:方法简单,容易实现.通常在有标记数据极少时, ...

  7. chapter09

    import java.io.File import java.nio.file._ import scala.collection.mutable.ArrayBuffer/** * Created ...

  8. 忘记mysql数据库密码时进行修改方法

    长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件夹( ...

  9. c#spinLock使用

        版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011915028/article/details/53011811 一下解释摘自msdn  ...

  10. python3 no module named yaml

    sudo apt-get install python3-yaml