POJ 3268 Silver Cow Party 最短路 dijkstra
来源:互联网 发布:return java 编辑:程序博客网 时间:2024/06/14 18:43
题目链接: PO—3268 Silver Cow Party
题目大意: 给一个有向图,求所有点经过定点s在回到自身的最短路中的最大距离。
题目分析: 先求从s出发的最短路,然后把所有边反向,再求回到s的最短路,用dijkstra就OK了
/***********************************Problem: 3268 User: ChenyangDuMemory: 4176K Time: 79MSLanguage: C++ Result: Accepted************************************/#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;struct edge{int l,v;};edge Edge(int l,int v){ edge t; t.l = l; t.v = v; return t;}bool operator < (edge a,edge b){ return a.l>b.l;}const int maxn = 1005,INF = 1000000;int n,m,x,G[maxn][maxn],d[2][maxn];//d[0]是从s出发的,d[1]是回到s的int main(){ //freopen("in.txt","r",stdin); scanf("%d%d%d",&n,&m,&x); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) G[i][j] = INF; d[0][i] = d[1][i] = INF; } for(int a,b,t,i=0;i<m;i++){ scanf("%d%d%d",&a,&b,&t); if(G[a][b] == INF || G[a][b] > t) G[a][b] = t; } priority_queue <edge> que; que.push(Edge(0,x)); d[0][x] = 0; while(!que.empty()){ edge t = que.top(); que.pop(); if(t.l > d[0][t.v])continue; for(int i=1;i<=n;i++){ if(i!=t.v && G[t.v][i]!=INF){ if(d[0][i] > d[0][t.v] + G[t.v][i]){ d[0][i] = d[0][t.v] + G[t.v][i]; que.push(Edge(d[0][i],i)); } } } } d[1][x] = 0; que.push(Edge(0,x)); while(!que.empty()){ //这次把G倒着写就行了 edge t = que.top(); que.pop(); if(t.l > d[1][t.v])continue; for(int i=1;i<=n;i++){ if(i!=t.v && G[i][t.v]!=INF){ if(d[1][i] > d[1][t.v] + G[i][t.v]){ d[1][i] = d[1][t.v] + G[i][t.v]; que.push(Edge(d[1][i],i)); } } } } int ans = 0 for(int i=1;i<=n;i++){ ans = max(ans,d[0][i] + d[1][i]); } cout<<ans<<endl; fclose(stdin); return 0;}
阅读全文
0 0
- poj 3268 Silver Cow Party 最短路/dijkstra
- poj 3268 Silver Cow Party(dijkstra最短路)
- POJ 3268 - Silver Cow Party(最短路dijkstra)
- POJ 3268 Silver Cow Party(最短路dijkstra)
- POJ 3268 Silver Cow Party (dijkstra来回最短路)
- POJ 3268 Silver Cow Party(最短路dijkstra)
- poj 3268 Silver Cow Party (dijkstra 求最短路)
- POJ 3268Silver Cow Party(dijkstra最短路)
- POJ 3268 Silver Cow Party 最短路 dijkstra
- POJ-3268-Silver Cow Party [最短路][Dijkstra]
- poj 3268 Silver Cow Party(最短路)
- POJ 3268 Silver Cow Party 最短路
- POJ 3268 Silver Cow Party 最短路
- POJ 3268 Silver Cow Party 最短路
- POJ 3268 Silver Cow Party 最短路
- POJ 3268 Silver Cow Party 最短路
- poj 3268 Silver Cow Party(最短路)
- POJ 3268 Silver Cow Party(最短路 dijkstra求任意两点最短路)
- binary
- six
- 彻底理解Redis有效期问题
- c++ 学习笔记
- C语言中 使用popen函数向linux系统发送shell命令
- POJ 3268 Silver Cow Party 最短路 dijkstra
- dows命令安装pymysql 和 Django
- 实体标签
- 操作系统复习-3.2覆盖与交换
- 遇到的问题
- 软件工程要点整理
- Android 手机6.0 定位权限问题
- Hadoop-Streaming实战经验及问题解决方法总结
- 时间戳中newData().getTime()中在苹果上的问题