poj 3268 Silver Cow Party(最短路)
2017-10-06 12:28
483 查看
N头牛,求这些牛从他们的位置走到x后,再返回到x的最短路(走不到x的不算)。选出最短路中的最大值,即结果。图是有向图。
首先求x到每个位置最短路,dijkstra,然后再求每个点到x的最短路。求每个点到x的最短路,把矩阵转置一下, 就是x到每个点的最短路了。
首先求x到每个位置最短路,dijkstra,然后再求每个点到x的最短路。求每个点到x的最短路,把矩阵转置一下, 就是x到每个点的最短路了。
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 1010; int G[MAXN][MAXN]; int book[MAXN]; int dis[2][MAXN]; int n,m,x; int main() { int u,v,w; memset(G,0x3f,sizeof(G)); memset(dis,0x3f,sizeof(dis)); scanf("%d %d %d",&n,&m,&x); dis[0][x] = dis[1][x] = 0; for(int i = 1; i <= n; ++i) G[i][i] = 0; for(int i = 0; i < m; ++i) { scanf("%d %d %d",&u,&v,&w); G[u][v] = w; } int minn = INF; for(int i = 1; i <= n; ++i) { minn = INF; for(int j = 1; j <= n; ++j) { if(book[j] == 0 && dis[0][j] < minn) { minn = dis[0][j]; u = j; } } book[u] = 1; for(int j = 1; j <= n; ++j) { if(book[j] == 0 && dis[0][j] > dis[0][u]+G[u][j]) dis[0][j] = dis[0][u]+G[u][j]; } } memset(book,0,sizeof(book)); for(int i = 1; i <= n; ++i) { minn = INF; for(int j = 1; j <= n; ++j) { if(book[j] == 0 && dis[1][j] < minn) { minn = dis[1][j]; u = j; } } book[u] = 1; for(int j = 1; j <= n; ++j) { if(book[j] == 0 && dis[1][j] > dis[1][u]+G[j][u]) dis[1][j] = dis[1][u]+G[j][u]; } } int res = 0; for(int i = 1; i <= n; ++i) { if(dis[0][i] != INF && dis[1][i] != INF) res = max(res,dis[0][i]+dis[1][i]); } printf("%d\n",res); return 0; }
相关文章推荐
- 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解题报告(dijkstra分别求单源起点和单源终点的最短路)
- POJ - 3268 Silver Cow Party (往返最短路,Floyd,Dijkstra 2次优化)
- POJ 3268 Silver Cow Party 最短路
- 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(最短路 dijkstra求任意两点最短路)
- 文章标题 POJ 3268 : Silver Cow Party (最短路--spfa)
- POJ - 3268 Silver Cow Party(最短路)
- POJ 3268 Silver Cow Party (最短路,置换矩阵)
- poj 3268 Silver Cow Party(最短路矩阵转置~)
- poj-3268 Silver Cow Party (最短路-spfa-求到同一起点,同一终点的最短路)
- POJ 3268 Silver Cow Party 最短路