题目链接:http://poj.org/problem?id=3259

Wormholes
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 45077   Accepted: 16625

Description

While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a time that is BEFORE you entered the wormhole! Each of FJ's farms comprises N (1 ≤ N ≤ 500) fields conveniently numbered 1..NM (1 ≤ M ≤ 2500) paths, and W (1 ≤ W ≤ 200) wormholes.

As FJ is an avid time-traveling fan, he wants to do the following: start at some field, travel through some paths and wormholes, and return to the starting field a time before his initial departure. Perhaps he will be able to meet himself :) .

To help FJ find out whether this is possible or not, he will supply you with complete maps to F (1 ≤ F ≤ 5) of his farms. No paths will take longer than 10,000 seconds to travel and no wormhole can bring FJ back in time by more than 10,000 seconds.

Input

Line 1: A single integer, FF farm descriptions follow. 
Line 1 of each farm: Three space-separated integers respectively: NM, and W 
Lines 2..M+1 of each farm: Three space-separated numbers (SET) that describe, respectively: a bidirectional path between S and E that requires T seconds to traverse. Two fields might be connected by more than one path. 
Lines M+2..M+W+1 of each farm: Three space-separated numbers (SET) that describe, respectively: A one way path from S to E that also moves the traveler back T seconds.

Output

Lines 1..F: For each farm, output "YES" if FJ can achieve his goal, otherwise output "NO" (do not include the quotes).

Sample Input

2
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
3 2 1
1 2 3
2 3 4
3 1 8

Sample Output

NO
YES

Hint

For farm 1, FJ cannot travel back in time. 
For farm 2, FJ could travel back in time by the cycle 1->2->3->1, arriving back at his starting location 1 second before he leaves. He could start from anywhere on the cycle to accomplish this.
 
题目大意:有一个农场有n块田地,m条路连接任意两条路(无向),w个虫洞(单向)回到t秒之前,现在需要你判断她从1到n,再从n回到1是否能遇到离开前的自己
解题思路:由于题目的特殊性,只需要将穿越虫洞的时间存为负值然后用Bellman_ford算法判断是否存在负权值回路即可 如果存在说明能看到否则反之。
AC代码:
 #include <stdio.h>
#include <string.h>
#define inf 9999999
int dis[];
int p[][];
int n,m,w,ans;
struct edge
{
int x,y,z;
}g[<<];
void add(int s,int e,int t)
{
g[ans].x = s;
g[ans].y = e;
g[ans].z = t;
ans ++;
}
bool Bellman_ford()
{
int i,j;
for (i = ; i <= n; i ++)
dis[i] = inf;
dis[] = ; for (i = ; i < n; i ++)
for (j = ; j < ans; j ++)
if (dis[g[j].y] > dis[g[j].x]+g[j].z)
dis[g[j].y] = dis[g[j].x]+g[j].z; for (j = ; j < ans; j ++) //遍历所有的边
if (dis[g[j].y] > dis[g[j].x]+g[j].z)
return false;
return true;
}
int main ()
{
int s,e,t,i,j,f;
scanf("%d",&f);
while (f --)
{
ans = ;
scanf("%d%d%d",&n,&m,&w);
for (i = ; i < m; i ++)
{
scanf("%d%d%d",&s,&e,&t);
add(s,e,t);
add(e,s,t);
}
for (i = ; i < w; i ++)
{
scanf("%d%d%d",&s,&e,&t);
add(s,e,-t);
}
bool f = Bellman_ford();
if (f)
printf("NO\n");
else
printf("YES\n");
}
return ;
}

POJ 3259 Wormholes (Bellman_ford算法)的更多相关文章

  1. poj - 3259 Wormholes (bellman-ford算法求最短路)

    http://poj.org/problem?id=3259 农夫john发现了一些虫洞,虫洞是一种在你到达虫洞之前把你送回目的地的一种方式,FJ的每个农场,由n块土地(编号为1-n),M 条路,和W ...

  2. poj 3259 Wormholes spfa算法

    点击打开链接 Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25582   Accepted: 9186 ...

  3. POJ 3259 Wormholes Bellman_ford负权回路

    Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...

  4. POJ 3259 Wormholes SPFA算法题解

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  5. 最短路(Bellman_Ford) POJ 3259 Wormholes

    题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...

  6. ACM: POJ 3259 Wormholes - SPFA负环判定

     POJ 3259 Wormholes Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu   ...

  7. POJ 3259 Wormholes(最短路径,求负环)

    POJ 3259 Wormholes(最短路径,求负环) Description While exploring his many farms, Farmer John has discovered ...

  8. POJ 3259 Wormholes(bellman_ford,判断有没有负环回路)

    题意:John的农场里field块地,path条路连接两块地,hole个虫洞,虫洞是一条单向路,不但会把你传送到目的地,而且时间会倒退Ts.我们的任务是知道会不会在从某块地出发后又回来,看到了离开之前 ...

  9. POJ 3259 Wormholes(最短路,判断有没有负环回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24249   Accepted: 8652 Descri ...

随机推荐

  1. NOIP2005 等价表达式 解题报告

    明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数表达式是和 ...

  2. ubuntu 12.04安装TP-LINK TL-WN725N v2

    用了一个上午,折腾完毕,分享如下. 1.先试了ndiswrapper和compat-wireless,各种不给力.后来看这篇博文<Ubuntu12.04下安装TL-WN322G+无线网卡驱动(R ...

  3. svm特征

    svm特征格式:<label><index1>:<value1><index1>:<value1>.... 其中<label> ...

  4. win10环境下使用苹果虚拟机不要开多线程应用下载文件

    win10环境下使用苹果虚拟机开多线程应用下载文件时候卡死,网络老掉. 8GB内存不够用?2.5mb网速不够用? 开的百度网盘下载个电影 结果虚拟机卡的不行 关了 网盘 挂起虚拟机 然后再 继续运行客 ...

  5. error: unknown field 'ioctl' specified in initializer

    error message: 原因: 从2.6.36开始,file_operations结构发生了重大变化 具体看  xx../include/linux/fs.h定义: 取消了原先的 int (*i ...

  6. 通过使用ScriptManager.RegisterStartupScript,呈现后台多次使用alert方法

    在前台HTML中加入alert或者confirm,相信大家已经非常熟悉并且经常使用: <div onclick="alert('hello')">按钮1</div ...

  7. android 定时器的使用

    1.android中通常是使用AlarmManager来定时启动一个单次或重复多次操作的.具体的说就是我们通过AlarmManager设定一个时间和注册一个intent到系统中,然后在该时间到来时,系 ...

  8. matlab blkproc

    有关blkproc 命令的使用 (2011-07-31 09:52:57) 标签: 杂谈 分类: matlab使用 如果你让matlab帮你计算最好的块大小,用bestblk函数,[MB,NB] = ...

  9. JS 获取当前浏览器类型

    JS代码: function getType() { if(navigator.userAgent.indexOf("MSIE")>0) { return "MSI ...

  10. C++ primer的第三章的主要内容

    第三章主要介绍了C++中标准库类型.主要讲到string和vector类型.在string类型中,能够很方便的操作字符串,应该要注意的地方就是它的字符串中元素的位置的类型是:size_type类型的数 ...