POJ 3259 Wormholes (Bellman-Ford判断负环)
来源:互联网 发布:win7禁止软件安装 编辑:程序博客网 时间:2024/06/08 04:25
题目
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
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
Input
Line
Line
Lines
Lines
Output
Lines
Sample Input
23 3 11 2 21 3 42 3 13 1 33 2 11 2 32 3 43 1 8
Sample Output
NOYES
Hint
For farm
For farm
题意
有一个人,他喜欢时间旅行,现在有一些虫洞,可以回到过去,现在有
思路
题目的数据给出了每个点的坐标,这样就可以构成一张图,用
代码
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<cmath>#include<set>#include<map>#include<cstdlib>#include<functional>#include<climits>#include<cctype>#include<iomanip>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define mod 1e9+7#define clr(a,x) memset(a,x,sizeof(a))const double eps = 1e-6;const int MAX_N=10000;const int MAX_E=10000;int From[MAX_E],To[MAX_E],W[MAX_E];int dis[MAX_N],tot;void init(){ tot=0;}void add_edge(int u,int v,int d){ From[tot]=u; To[tot]=v; W[tot++]=d;}bool Bellman_ford(int s,int n){ clr(dis,0x3f); dis[s]=0; for(int k=0;k<n-1;k++) { bool relaxed=0; for(int i=0;i<tot;i++) { int x=From[i],y=To[i]; if(dis[y]>dis[x]+W[i]) { dis[y]=dis[x]+W[i]; relaxed=1; } } if(!relaxed) break; } for(int i=0;i<tot;i++) if(dis[To[i]]>dis[From[i]]+W[i]) return 1; return 0;}int main(){ int f,n,m,t,u,v,w; cin>>f; while(f--) { int num=0; init(); cin>>n>>m>>t;//*************************************建图 for(int i=0;i<m;i++) { cin>>u>>v>>w; add_edge(u,v,w); add_edge(v,u,w); num+=2; //记录边的个数 } for(int i=0;i<t;i++) { cin>>u>>v>>w; add_edge(u,v,-w); }//*************************************建图 bool ans=Bellman_ford(1,num); if(ans) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}
- POJ - 3259 Wormholes(判断负环, Bellman Ford,SPFA)
- POJ 3259 Wormholes(判断负环&(Bellman-Ford|SPFA))
- poj 3259 Wormholes 【Bellman-Ford 判断负环】
- POJ 3259 Wormholes (Bellman-Ford判断负环)
- POJ 3259 Wormholes(判断负权回路|SPFA||Bellman-Ford)
- POJ 3259 Wormholes (判断负环,SPFA或Bellman-Ford都可)
- [ACM] POJ 3259 Wormholes (bellman-ford最短路径,判断是否存在负权回路)
- PKU 3259 Wormholes - 判断负权回路 Bellman-Ford
- uva 558 - Wormholes(Bellman Ford判断负环)
- uva 558 Wormholes (Bellman-Ford算法判断负环)
- POJ-3259 Wormholes(负权回路[Bellman-Ford])
- POJ 3259 用Bellman-Ford判断负环
- POJ 3259 - Wormholes(Bellman负环)
- POJ3259 Wormholes(Bellman-ford 负环)
- POJ 3259 Wormholes(bellman-ford)
- POJ 3259 Wormholes Bellman-Ford
- poj 3259 Wormholes(Bellman-Ford)
- POJ 3259 Wormholes (Bellman-ford)
- 从一个字符数组中读出相应的整数、实数
- ubuntu maven install&config
- Java开发中的23种设计模式详解(转)
- 内存管理概述
- Shuffle'm Up
- POJ 3259 Wormholes (Bellman-Ford判断负环)
- HDOJ 1004,Let the Balloon Rise
- python多线程上锁
- LeetCode 3Sum
- R语言时间序列之ARMA、ARIMA模型
- 2017暑假集训第二轮考试小结
- 【python】web后台开发工程师-本科
- 学生信息管理系统之数据库
- HDOj 2546 饭卡 (动态规划)