POJ 3268 Silver Cow Party(Spfa)
来源:互联网 发布:唐100最新销量数据 编辑:程序博客网 时间:2024/06/04 18:32
Description
一张n个点m条边的有向图,每条边有边权,求除x外其余n-1个点到x点再回去的最短路边权和中的最大值
Input
多组用例,每组用例首先输入三个整数n,m,x分别表示点数,边数和目标点编号,之后m行每行三个整数,u,v,w表示u点到v点有一条边权为w的有向边,以文件尾结束输入(1<=n<=1000,1<=m<=100000,1<=x<=n)
Output
对于每组用例,输出其余n-1个点到x点再回去的最短路边权和中的最大值
Sample Input
4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3
Sample Output
10
Solution
对原图和反图分别跑一边spfa求出x->i和i->x的最短路之和后取最大值即为答案
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 1111#define maxm 111111struct edge{ int to,next; int cost;}g[maxm];int head[maxm],tol;int dis[maxn];//所有点到起点的最短距离void init()//初始化 { memset(head,-1,sizeof(head)); tol=0;}void add(int u,int v,int c)//单向边,从u到v,权值为c { g[tol].cost=c; g[tol].to=v; g[tol].next=head[u]; head[u]=tol++;}void spfa(int s)//单源最短路,s是起点{ bool vis[maxn]; memset(vis,false,sizeof(vis)); queue<int>que; for(int i=0;i<maxn;i++) dis[i]=INF; dis[s]=0; vis[s]=true; que.push(s); while(!que.empty()) { int u=que.front(); que.pop(); vis[u]=false; for(int i=head[u];i!=-1;i=g[i].next) { int v=g[i].to; int c=g[i].cost; if(dis[v]>dis[u]+c) { dis[v]=dis[u]+c; if(!vis[v]) { vis[v]=true; que.push(v); } } } }}int edge[maxm][3];int ans[maxn];int main(){ int n,m,x; while(~scanf("%d%d%d",&n,&m,&x)) { init(); for(int i=1;i<=m;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); add(u,v,w); edge[i][0]=u,edge[i][1]=v,edge[i][2]=w; } spfa(x); for(int i=1;i<=n;i++)ans[i]=dis[i]; init(); for(int i=1;i<=m;i++) { int u,v,w; u=edge[i][0],v=edge[i][1],w=edge[i][2]; add(v,u,w); } spfa(x); for(int i=1;i<=n;i++)ans[i]+=dis[i]; int Max=-1; for(int i=1;i<=n;i++)Max=max(Max,ans[i]); printf("%d\n",Max); }}
0 0
- poj 3268 Silver Cow Party (spfa )
- 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)
- 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)
- android-Ultra-Pull-To-Refresh嵌套ViewPager滑动冲突解决
- Excel的表格的读取数据
- C++ 返回指向数组的指针
- 文件打开数目过多——bug排查和修复
- window与ubuntu双系统下修改默认启动项以及引导时间
- POJ 3268 Silver Cow Party(Spfa)
- 0004 如何编写人生的第一行代码helloworld
- sqlmap之(五)----Cookie注入实战
- 使用Git上传本地项目到oschina
- nginx1.9+做TCP代理(端口转发)
- libjpeg源码编译
- PHP+Redis实现Session共享
- Java中的堆栈区别
- 机器学习——模型评估与选择