POJ 3268 Silver Cow Party 【单项图,双向spfa】
来源:互联网 发布:得力考勤怎么修改数据 编辑:程序博客网 时间:2024/06/05 07:35
点击打开链接
题意:
给你一个单项图。然后问你从一个点出发,到其他所有点再回来,花费的最长时间是哪一次。
题解: spfa,或者 DJ 都可以 单元最短路,
因为图是单向的,那么a->b 求一遍之后, 地图换个方向, 再来一遍a->b 。
之和就是来回。两次单源最短路。就解决了 2*n^2,
之前看了一眼,直接想暴力一发floyd。 觉得这个最好用,结果超时,n次spfa也超时。
还不是太理解。没想到地图调换方向。
还有。暴力n次 bfs 都能过。bfs求最短路是不是更快啊。
#include<iostream>#include<string>#include<stdio.h>#include<string.h>#include<map>#include<queue>#include<algorithm>using namespace std;const int maxn=1111;const int maxm=200210;const int inf = 0xffffff;int n,q,val,cnt,ed,x,y;int ans[maxn];int head[maxn],head1[maxn];int dis[maxn];int v[maxm];struct node{ int w,to,nxt;}edge[maxm],edge1[maxm];void addedge(int x,int y,int val){ edge[++cnt].to=y; edge[cnt].w=val; edge[cnt].nxt=head[x]; head[x]=cnt; edge1[cnt].to=x; edge1[cnt].w=val; edge1[cnt].nxt=head1[y]; head1[y]=cnt;}void spfa(int s){ queue <int> que; for(int i=1;i<=n;i++)dis[i]=inf; memset(v,0,sizeof(v)); que.push(s); dis[s]=0; while(!que.empty()) { int u=que.front(); que.pop(); v[u]=0; for(int i=head[u];i!=-1;i=edge[i].nxt) { int vv=edge[i].to; if(dis[vv]>dis[u]+edge[i].w) { dis[vv]=dis[u]+edge[i].w; if(!v[vv]) { v[vv]=true; que.push(vv); } } } }}void spfa1(int s){ queue <int> que; for(int i=1;i<=n;i++)dis[i]=inf; memset(v,0,sizeof(v)); que.push(s); dis[s]=0; while(!que.empty()) { int u=que.front(); que.pop(); v[u]=0; for(int i=head1[u];i!=-1;i=edge1[i].nxt) { int vv=edge1[i].to; if(dis[vv]>dis[u]+edge1[i].w) { dis[vv]=dis[u]+edge1[i].w; if(!v[vv]) { v[vv]=true; que.push(vv); } } } }}int main(){ while(~scanf("%d %d %d",&n,&q,&ed)){ memset(head,-1,sizeof(head)); memset(head1,-1,sizeof(head1)); cnt=0; for(int i=1;i<=q;++i){ scanf("%d %d %d",&x,&y,&val); addedge(x,y,val); } spfa(ed);for(int i=1;i<=n;++i) ans[i]=dis[i]; spfa1(ed);for(int i=1;i<=n;++i) ans[i]+=dis[i]; int mxx=0; for(int i=1;i<=n;++i) mxx=max(mxx,ans[i]); printf("%d\n",mxx); } return 0;}
0 0
- POJ 3268 Silver Cow Party 【单项图,双向spfa】
- SPFA POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party , spfa , dijkstra
- POJ 3268 Silver Cow Party(SPFA)
- poj 3268 Silver Cow Party (spfa )
- Silver Cow Party - POJ 3268 spfa
- poj 3268 Silver Cow Party(SPFA)
- Poj 3268 Silver Cow Party【SPFA】
- POJ 3268 Silver Cow Party(Spfa)
- POJ-3268-Silver Cow Party(SPFA 反向建图)
- poj 3268 Silver Cow Party Dijkstra 和SPFA
- poj 3268 Silver Cow Party(最短路+SPFA)
- POJ--3268--Silver Cow Party【SPFA+邻接表】
- POJ 3268 Silver Cow Party (来回最短路 SPFA)
- poj 3268 Silver Cow Party(dijkstra||SPFA)(中等)
- Silver Cow Party poj 3268 Dijkstra,spfa,+vector
- POJ-3268 Silver Cow Party(最短路spfa算法)
- poj 3628 Silver Cow Party (spfa)
- 实验吧隐写术WP(三)
- 0007_20170402_【我是菜鸟】_Java 中的变量类型所占字节数和数据范围
- 网友年龄_蓝桥杯真题
- 关于光流法 ( 2 )
- Angularjs中使用layDate日期控件解决其与ng-model使用时的冲突
- POJ 3268 Silver Cow Party 【单项图,双向spfa】
- 【demo】使用React+Webpackt做一个简单的todolist
- JZOJ 4.1 C组 【GDOI2005】电路稳定性
- js入门(第一篇)
- CodeForces 764A Taymyr is calling you
- json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
- 小萨的烦恼
- Unit 1
- 读写锁(read-write lock)机制-----多线程同步问题的解决