uva10000 Longest Paths
2014-11-10 22:49
267 查看
最长路径,和最短路径差不多,用了spfa来求
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #define N 1000 using namespace std; int g ; int dis ; int vis ; void spfa(int n,int s){ queue<int>que; while(!que.empty()){ que.pop(); } que.push(s); while(!que.empty()){ int d=que.front(); que.pop(); vis[d]=0; for(int i=1;i<=n;i++){ if(g[d][i]>0 && dis[i]<dis[d]+g[d][i]){ dis[i]=dis[d]+g[d][i]; if(!vis[i]){ vis[i]=1; que.push(i); } } } } int l=1; for(int i=1;i<=n;i++){ if(dis[i]>dis[l]){ l=i; } } printf("The longest path from %d has length %d, finishing at %d.\n\n",s,dis[l],l); } int main() { int n; int counter=0; while(~scanf("%d",&n) && n!=0){ counter++; int s; scanf("%d",&s); int u,v; memset(g,0,sizeof(g)); memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); while(scanf("%d%d",&u,&v) && (u!= 0 && v!=0)){ g[u][v]=1; } printf("Case %d: ",counter); spfa(n,s); } return 0; }
相关文章推荐
- UVA_10000_Longest Paths
- UVA 10000 Longest Paths 最简单的最长路
- UVA 10000 -Longest Paths-Bellman - Ford,flody,spfa
- UVa10000_Longest Paths(最短路SPFA)
- UVa:10000 Longest Paths (DAG上的最长路)
- UVA 10000 Longest Paths(SPFA)
- UVA-10000 Longest Paths (SPFA最短路算法)
- uva 10000 Longest Paths (SPFA)
- UVa 10000 Longest Paths (单源最长路 - floyd or 拓扑排序)
- UVa10000_Longest Paths(最短路SPFA)
- UVA 10000 - Longest Paths
- UVA 10000 Longest Paths (SPFA算法,模板题)
- UVa 10000 - Longest Paths
- 10000-Longest Paths
- UVa10000 - Longest Paths(为什么是WA)
- 【转】uva 10000--10099
- uva 10000
- uva10000
- Uva1225 求数字0-9在前n个正整数中出现的次数(1<=n<=10000)
- Uva Oj 10000 - Longest Paths