Wormholes(POJ 3259)
来源:互联网 发布:在淘宝上如何开虚拟店 编辑:程序博客网 时间:2024/04/27 22:31
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..N, M (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
Output
Sample Input
23 3 11 2 22 3 11 3 43 1 32 3 43 2 11 2 33 1 8
Sample Output
NOYES
Hint
<pre name="code" class="cpp">#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;const int MAXN = 500 + 10;const int MAXM = 5000 + 1000;const int INF = 0x3f3f3f3f;int n,m,w,k;int f[MAXN];//从顶点s指向顶点e的权值为t的边struct farm{ int s,e,t;}map[MAXM];//记录一条从顶点x到顶点y权值为z的路径void join(int x,int y,int z){ map[k].s = x; map[k].e = y; map[k].t = z; k++;}//如果返回1则存在负圈,否则不存在int Bellman_Ford(){ memset(f,INF,sizeof(f)); f[1] = 0; //求最短路 for(int i = 0;i < n;i++) { for(int j = 0;j < k;j++) { int u = map[j].s; int v = map[j].e; int w = map[j].t; if(f[u] + w < f[v]) f[v] = f[u] + w; } } for(int i = 0;i < n;i++) { for(int j = 0;j < k;j++) { int u = map[j].s; int v = map[j].e; int w = map[j].t; if(f[u] + w < f[v]) //若还能更新,则存在负圈 return 1; } } return 0;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d %d %d",&n,&m,&w); int x,y,z; k = 0; for(int i = 0;i < m;i++) { scanf("%d %d %d",&x,&y,&z); join(x,y,z); join(y,x,z); } for(int i = 0;i < w;i++) { scanf("%d %d %d",&x,&y,&z); join(x,y,-z); } if(Bellman_Ford()) printf("YES\n"); else printf("NO\n"); } return 0;}
- poj 3259 Wormholes //SPFA
- POJ 3259 Wormholes
- poj 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- Poj 3259 Wormholes
- poj 3259 Wormholes
- poj-3259-Wormholes
- POJ-3259-Wormholes
- POJ 3259 Wormholes bellman_ford
- poj 3259 Wormholes
- poj 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- poj 3259 Wormholes
- POj 3259 Wormholes
- POJ 3259 Wormholes
- 字符串变形
- Java程序打包成jar包在Linux上运行
- mysql同一张表的字段更新到另一张表的字段
- 学习笔记:setlocale
- 1002
- Wormholes(POJ 3259)
- 【图】使用java service wrapper将java程序注册为window服务
- 指尖检测的几种新方法
- Android N requires the IDE to be running with Java 1.8 or later
- WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
- 文件指针权限
- c语言函数的秘密
- linux window mac ox sqlite安装
- C++中define与const的区别