POJ3259 解题报告
来源:互联网 发布:mac地址表包括vlan吗 编辑:程序博客网 时间:2024/05/19 11:48
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 toF (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 of each farm: Three space-separated integers respectively: N, M, and W
Lines 2..M+1 of each farm: Three space-separated numbers (S, E, T) 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 (S,E, T) that describe, respectively: A one way path from S toE that also moves the traveler back T seconds.
Output
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 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
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;struct edge{ int from; int to; int cost;};const int INF=2e9;const int maxn=500+50;const int maxm=2500+20;const int maxw=200+20;const int maxe=7000;edge es[maxe];int d[maxn];int F,N,M,W,E;void bellman_ford(int s);int main(){ cin>>F; while(F--) { cin>>N>>M>>W; E=2*M+W; int i; for(i=0;i<2*M;i+=2) { int s,e,t; cin>>s>>e>>t; es[i].from=s; es[i].to=e; es[i].cost=t; es[i+1].from=e; es[i+1].to=s; es[i+1].cost=t; } for(int j=0;j<W;j++) { int s,e,t; cin>>s>>e>>t; es[i+j].from=s; es[i+j].to=e; es[i+j].cost=-1*t; } //cout<<E<<endl; bellman_ford(1); } return 0;}void bellman_ford(int s){ fill(d,d+maxn,INF); d[s]=0; int loop=0; for(int j=0;j<N;j++) { loop++; bool update=false; for(int i=0;i<E;i++) { edge e=es[i]; if(d[e.from]!=INF&&d[e.to]>d[e.from]+e.cost) { d[e.to]=d[e.from]+e.cost; update=true; } } if(!update) break; if(loop==N) { cout<<"YES\n"; return ; } } cout<<"NO\n";}
- poj3259解题报告
- poj3259解题报告
- poj3259解题报告
- POJ3259 解题报告
- POJ3259 Wormholes 解题报告--bellman_ford
- poj3259
- POJ3259
- poj3259
- poj3259
- poj3259
- poj3259
- poj3259
- poj3259
- poj3259
- POJ3259
- POJ3259
- poj3259
- POJ3259
- hdu1839 spfa+二分查找
- Spark编程之基本的RDD算子之zip,zipPartitions,zipWithIndex,zipWithUniqueId
- 深度优先搜索
- java中instanceof和isInstance
- C++_Seqlist/Linklist
- POJ3259 解题报告
- 2017ICPCECIC
- 同步、异步、阻塞、非阻塞的理解
- JavaWeb——文件上传和下载.
- 实现一棵二叉树的层序遍历
- 合租分房策略
- HIbernate第一课--基本原理,配置
- 对现有控件进行拓展
- 2016校招腾讯研发岗笔试题---递归法求解格雷码