链接:



Wormholes
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 25079   Accepted: 8946

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
comprisesN (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 Ethat 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 Ethat 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.

Source

题意:


农夫 FJ 有 N 块田地【编号 1...n】 (1<=N<=500)

        田地间有 M 条路径 【双向】(1<= M <= 2500)

        同时有 W 个孔洞,可以回到以前的一个时间点【单向】(1<= W <=200)

        问:FJ 是否能在田地中遇到以前的自己

算法:bellman_ford 判断是否有负环

思路:


田地间的双向路径加边,权值为

        孔洞间的单向路径加边,权值为【可以回到以前】

        判断有向图是否存在负环

        因为如果存在了负数环,时间就会不停的减少,

        那么 FJ 就可以回到以前更远的地方,肯定能遇到以前的自己的

PS:第一次做这个的童鞋,如果实在无法理解,就按照上面的样例和思路画个图就好了,反正才三个点。
         两年了,居然如此经典的入门题目都没有遇到过,真不知道我干什么去了Orz



code:

3259 Accepted 180K 63MS C++ 1707B

/********************************************************************
Accepted 180 KB 47 ms C++ 2509 B
题意:农夫 FJ 有 N 块田地【编号 1...n】 (1<=N<=500)
田地间有 M 条路径 【双向】(1<= M <= 2500)
同时有 W 个孔洞,可以回到以前的一个时间点【单向】(1<= W <=200)
问:FJ 是否能在田地中遇到以前的自己
算法:bellman_ford 判断是否有负环
思路:田地间的双向路径加边,权值为正
孔洞间的单向路径加边,权值为负【可以回到以前】
判断有向图是否存在负环
因为如果存在了负数环,时间就会不停的减少,
那么 FJ 就可以回到以前更远的地方,肯定能遇到以前的自己的
*******************************************************************/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std; const int maxn = 510;
const int maxw = 2500*2+200+10;
const int INF = 10000;
int d[maxn];
int n,m; struct Edge{
int u,v;
int t;
}edge[maxw]; bool bellman_ford()
{
for(int i = 1; i <= n; i++) d[i] = INF; //初始化从起点到 i 时间为最值
d[1] = 0; //起点为 0 for(int i = 1; i < n; i++)
{
bool flag = true; //判断这轮是否能够松弛
for(int j = 0; j < m; j++)
{
int u = edge[j].u;
int v = edge[j].v;
int t = edge[j].t; if(d[v] > d[u]+t) //松弛操作
{
d[v] = d[u]+t;
flag = false;
}
}
if(flag) return false; //如果当前轮不能松弛,直接判断没有负数环
} for(int i = 0; i < m; i++)
{
if(d[edge[i].v] > d[edge[i].u]+edge[i].t)
return true;//如果仍然能够松弛则存在负环
}
return false;
} int main()
{
int T;
int M,W;
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &n,&M,&W);
m = 0; int u,v,t;
for(int i = 1; i <= M; i++) //田地间的大路,加双边
{
scanf("%d%d%d", &u,&v,&t);
edge[m].u = u;
edge[m].v = v;
edge[m++].t = t; edge[m].u = v;
edge[m].v = u;
edge[m++].t = t;
} for(int i = 1; i <= W; i++) //孔洞,加单边
{
scanf("%d%d%d", &u,&v,&t);
edge[m].u = u;
edge[m].v = v;
edge[m++].t = -t;
} if(bellman_ford()) printf("YES\n"); //存在负数环
else printf("NO\n");
}
}
















POJ 3259 Wormholes【bellman_ford判断负环——基础入门题】的更多相关文章

  1. POJ 3259 Wormholes ( SPFA判断负环 && 思维 )

    题意 : 给出 N 个点,以及 M 条双向路,每一条路的权值代表你在这条路上到达终点需要那么时间,接下来给出 W 个虫洞,虫洞给出的形式为 A B C 代表能将你从 A 送到 B 点,并且回到 C 个 ...

  2. POJ 3259 Wormholes(SPFA判负环)

    题目链接:http://poj.org/problem?id=3259 题目大意是给你n个点,m条双向边,w条负权单向边.问你是否有负环(虫洞). 这个就是spfa判负环的模版题,中间的cnt数组就是 ...

  3. POJ 3259 Wormholes 最短路+负环

    原题链接:http://poj.org/problem?id=3259 题意 有个很厉害的农民,它可以穿越虫洞去他的农场,当然他也可以通过道路,虫洞都是单向的,道路都是双向的,道路会花时间,虫洞会倒退 ...

  4. POJ 3259 Wormholes( bellmanFord判负环)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36425   Accepted: 13320 Descr ...

  5. POJ 3259 Wormholes (判负环)

    Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 46123 Accepted: 17033 Descripti ...

  6. POJ 3259 Wormholes【Bellman_ford判断负环】

    题意:给出n个点,m条正权的边,w条负权的边,问是否存在负环 因为Bellman_ford最多松弛n-1次, 因为从起点1终点n最多经过n-2个点,即最多松弛n-1次,如果第n次松弛还能成功的话,则说 ...

  7. POJ 3259:Wormholes bellman_ford判定负环

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 37906   Accepted: 13954 Descr ...

  8. poj 3259 (Bellman_Ford判断负环)

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

  9. Wormholes POJ 3259(SPFA判负环)

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

随机推荐

  1. Django——WEB三层架构与MVC

    而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时 ...

  2. 【Datastage】NULL VALUE TO A NOT NULL VALUE

    使用ds是报错如上图: 造成这个问题的原因是: 在写SQL时候没有给字段别名与DS中对应一致 例如有下表: CREATE TABLE DataInfo( ID_1 ), ID_2 ) ) CREATE ...

  3. 云计算的三种服务模式:IaaS,PaaS和SaaS(转载)

    云服务”现在已经快成了一个家喻户晓的词了.如果你不知道PaaS, IaaS 和SaaS的区别,那么也没啥,因为很多人确实不知道. “云”其实是互联网的一个隐喻,“云计算”其实就是使用互联网来接入存储或 ...

  4. 软件质量特征 ISO9126

    ISO/IEC9126软件质量模型是一种评价软件质量的通用模型,包括3个层次: 1.质量特性 2.质量子特性 3.度量指标 其中各六个质量特性与二十七个质量子特性的关系如下表: 1.功能性 是指当软件 ...

  5. 工作总结 input 限制字数 textarea限制字数

    最大能输入50个字 复制粘贴也不行 <textarea maxlength="50"  class=" smallarea" cols="60& ...

  6. SVN钩子 之 pre-commit

    http://files.cnblogs.com/lyl6796910/pre-commit%E9%92%A9%E5%AD%90.rar 我用的是Windows版本的SVN:VisualSVN Ser ...

  7. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围         本章之前提到过. ...

  8. ST股福音:涨停潮开始! 最全ST摘帽股汇总!

    本周ST股摘帽行情提前预演,ST股上演涨停潮,部分ST股甚至出现连续涨停.云财经在三季报披露之前曾经做过一期ST股摘帽分析,在三季报正式披 露完毕后,以及部分ST公司公布了2015年年报预告,ST股能 ...

  9. 测试xxxxxxxx

    测试sdfs xxxxxxxbgssdfsdf f sd=JS-demp.zip f /**  * @author John Smith <john.smith@example.com>  ...

  10. JSONP(转)

    1 什么是Jsonp? JSONP(JSON with Padding)是数据格式JSON的一种“使用模式”,可以让网页从别的网域要数据.另一个解决这个问题的新方法是跨来源资源共享. 由于同源策略,一 ...