POJ 3268 Silver Cow Party bfs最短路
2015-04-18 22:29
399 查看
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=66569#problem/D
题意:cows要举办一个party,地点选择其中一个cow的位置,其他cow去参加,需要沿着单向边走一个来回,求他们的最小来回路程中的最大的值。
刚开始天真的写了N多个DFS,然后各种WA,只好放弃了,然后改写BFS,然后AC,然后就没有然后了,看来最短路还是写成BFS吧、。。。
代码:
题意:cows要举办一个party,地点选择其中一个cow的位置,其他cow去参加,需要沿着单向边走一个来回,求他们的最小来回路程中的最大的值。
刚开始天真的写了N多个DFS,然后各种WA,只好放弃了,然后改写BFS,然后AC,然后就没有然后了,看来最短路还是写成BFS吧、。。。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<queue> #define INF 0x7fffffff using namespace std; struct edge{ int u,v,w; }E[100010]; int N,M,X; vector<int> G[2][1010]; int ans[2][1010],vis[1010]; void bfs(int op){//op为0时正向更新v,op为1时反向更新u memset(vis,0,sizeof(vis)); for(int i=1;i<=N;i++) ans[op][i]=INF; queue<int> Q; Q.push(X); vis[X]=1;ans[op][X]=0; while(!Q.empty()){ int tp=Q.front();Q.pop();vis[tp]=0; for(int i=0;i<(int)G[op][tp].size();i++){ int t=G[op][tp][i]; int u=E[t].u,v=E[t].v,w=E[t].w; if(op) swap(u,v);//反向更新最小值 if(ans[op][u]+w>=ans[op][v]) continue; ans[op][v]=ans[op][u]+w; if(!vis[v]) vis[v]=1,Q.push(v); } } } int main(){ freopen("D:\\in.txt","r",stdin); while(cin>>N){ cin>>M>>X; int a,b,c; for(int i=0;i<=N;i++) G[0][i].clear(),G[1][i].clear(); for(int i=0;i<M;i++){ scanf("%d %d %d",&a,&b,&c); E[i]=(edge){a,b,c}; G[0][a].push_back(i);//以a出发的边 G[1][b].push_back(i);//指向b的边 } bfs(0);bfs(1); int Max=0; for(int i=1;i<=N;i++) { Max=max(Max,ans[0][i]+ans[1][i]); } cout<<Max<<endl; } return 0; }
相关文章推荐
- POJ 3268 Silver Cow Party (最短路dijkstra)
- poj 3268 Silver Cow Party (dijkstra 求最短路)
- POJ 3268 Silver Cow Party(dijkstra最短路)
- poj 3268 Silver Cow Party ([kuangbin带你飞]专题四 最短路练习)
- POJ 3268 D - Silver Cow Party(往返路程最短路)
- POJ 3268 - Silver Cow Party(单源最短路)
- poj - 3268 Silver Cow Party (求给定两点之间的最短路)
- POJ 3268 Silver Cow Party (来回最短路 SPFA)
- poj 3268 Silver Cow Party(dijkstra ++ 双向最短路)
- POJ 3268 Silver Cow Party(dijkstra求单源最短路)
- Silver Cow Party POJ - 3268 最短路
- POJ 3268 Silver Cow Party(双向最短路)
- POJ-3268 Silver Cow Party( 最短路 )
- POJ 3268 Silver Cow Party(取反最短路)
- POJ - 3268 Silver Cow Party(图论/dijkstra最短路)
- POJ 3268 Silver Cow Party(多源最短路的转化)
- poj 3268 Silver Cow Party(dijkstra最短路)
- POJ 3268 Silver Cow Party (Dijkstra~)
- poj 3268 Silver Cow Party(最短路+SPFA)
- POJ 3268 Silver Cow Party (Dijkstra + 优先队列)