POJ Wormholes 3259(最短路)
来源:互联网 发布:java jlabel 链接 编辑:程序博客网 时间:2024/04/29 00:03
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
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 to E that also moves the traveler back Tseconds.
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
上代码
Bellman_Ford
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>#include <queue>#include <iostream>using namespace std;#define inf 0x3f3f3f3fint top,n;int dist[1000];struct node{ int u,v,w;}q[6000];int bellman(){ int i,j; for(i=1;i<=n;i++) { dist[i]=inf; } dist[1]=0; for(i=1;i<n;i++) { for(j=0;j<top;j++) { int u=q[j].u; int v=q[j].v; if( dist[v]>dist[u]+q[j].w) { dist[v]=dist[u]+q[j].w; } } } for(i=0;i<top;i++) { int u=q[i].u; int v=q[i].v; if( dist[v]>dist[u]+q[i].w) { return 0; } } return 1;}int main(){ int m,i,j,l,k; int t; int a,b,c; cin>>t; while(t--) { top=0; cin>>n>>m>>l; while(m--) { cin>>a>>b>>c; q[top].u=a; q[top].v=b; q[top++].w=c; q[top].u=b; q[top].v=a; q[top++].w=c; } while(l--) { cin>>a>>b>>c; q[top].u=a; q[top].v=b; q[top++].w=-c; } if(!bellman()) { printf("YES\n"); } else { printf("NO\n"); } } return 0;}
SPFA
#include <queue>#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>using namespace std;#define inf 1<<26struct node{ int v,w; int next;}q[6000];int head[6000],dist[6000],vis[6000],c[6000];int top,n;void chu(){ int i; top=0; for(i=0;i<=n;i++) { head[i]=-1; vis[i]=0; c[i]=0; }}void add(int u,int v,int w){ q[top].v=v; q[top].w=w; q[top].next=head[u]; head[u]=top++;}void spfa(){ int i,j; for(i=1;i<=n;i++) { dist[i]=inf; } vis[1]=1; dist[1]=0; c[1]++; queue<int >Q; Q.push(1); while(!Q.empty()) { int x=Q.front(); vis[x]=0; Q.pop(); for(i=head[x];i!=-1;i=q[i].next) { int v=q[i].v; int w=q[i].w; if(dist[v]>dist[x]+w) { dist[v]=dist[x]+w; if(!vis[v]) { vis[v]=1; c[v]++; if(c[v]>=n) { cout<<"YES\n"; return ; } Q.push(v); } } } } cout<<"NO\n";}int main(){ int t,m,i,j,l; cin>>t; int a,b,c; while(t--) { cin>>n>>m>>l; chu(); while(m--) { cin>>a>>b>>c; add(a,b,c); add(b,a,c); } while(l--) { cin>>a>>b>>c; add(a,b,-c); } spfa(); } return 0;}
- poj 3259 Wormholes 最短路
- poj 3259 Wormholes 最短路
- POJ Wormholes 3259(最短路)
- poj 3259 Wormholes 最短路
- POJ 3259 Wormholes(最短路)
- POJ 3259 Wormholes(最短路Bellman_Ford)
- poj 3259 Wormholes (最短路 Bellma_ford)
- poj 3259 Wormholes 图论 最短路 判负环
- POJ 3259 Wormholes(最短路)
- POJ 3259Wormholes(最短路bellman)
- POJ 3259 Wormholes(floyd求负环,最短路)
- POJ-3259-Wormholes [最短路][BellmanFord]
- poj 3259 -- Wormholes(最短路,负环)
- poj 3259 Wormholes(最短路+spfa+判负回路)
- poj 3259 Wormholes (spfa求最短路)
- POJ 3259 Wormholes (图论---最短路 Bellman-Ford || SPFA)
- POJ 3259Wormholes(贝尔曼最短路)
- POJ 3259 Wormholes (最短路 SPFA 判断负环)
- 多线程编程入门(7):线程范围内的共享变量
- 排序算法 之 希尔排序ShellSort
- 匈牙利算法(膜拜大神orz)
- XZ_iOS之View的生命周期
- 排序
- POJ Wormholes 3259(最短路)
- Android Cursor类的了解和使用
- Codeforces 14D 求树的直径(网上大多数是DFS于是自己写了个BFS)
- java之网络编程基础
- 排序算法之一 快速排序
- 采用libxml2解析xml资源
- vs2008进行移动开发WINCE时,编译慢的解决方法
- 对拍程序
- java运行时类信息--原理、API以及应用