POJ 3268 Silver Cow Party
2011-04-21 15:55
316 查看
题意
一只母牛从N块田中的任一块(1≤N≤1000)去参加盛大的母牛聚会,这个聚会被安排在X号田(1≤X ≤N)。一共有M(1 ≤ M ≤ 100,000)条单行道分别连接着两块田,且通过路i需要花Ti(1≤Ti≤100)的时间。
每头母牛必需参加宴会并且在宴会结束时回到自己的领地,但是每头牛都很懒而喜欢选择化是最少的一个方案。来时的路和去时的可能不一样。
求每头牛要来回的最短时间。
思路:正着求一次最短路径,矩阵转置,再求一次最短路径,想加求最大
一只母牛从N块田中的任一块(1≤N≤1000)去参加盛大的母牛聚会,这个聚会被安排在X号田(1≤X ≤N)。一共有M(1 ≤ M ≤ 100,000)条单行道分别连接着两块田,且通过路i需要花Ti(1≤Ti≤100)的时间。
每头母牛必需参加宴会并且在宴会结束时回到自己的领地,但是每头牛都很懒而喜欢选择化是最少的一个方案。来时的路和去时的可能不一样。
求每头牛要来回的最短时间。
思路:正着求一次最短路径,矩阵转置,再求一次最短路径,想加求最大
#include <iostream> #include <string.h> using namespace std; const int MAXN =1001; int n,m,x; const int INF = 0x7FFF; int G[MAXN][MAXN]; int dist1[MAXN]; int sum[MAXN]; bool used[MAXN]; void in(){ int i,j,from,to,t; cin >> n >> m >> x; for(i = 1; i <= n;i++){ for(j = 1; j <= n; j++){ if(i != j){ G[i][j] = INF; } else { G[i][j] = 0; } } } for(i = 1; i <= m;i++){ cin >> from >> to >> t; G[from][to] = t; } memset(sum,0,sizeof(sum)); } void dijkstra(){ int i,j; for(i = 1; i <= n;i++){ dist1[i] = G[x][i]; used[i] = false; } used[x] = true; dist1[x] = 0; for(i = 1; i < n; i++){ int min = INF,minIndex = x; for(j = 1; j <= n; j++) if(!used[j] && dist1[j] < min){ min = dist1[j]; minIndex = j; } used[minIndex] = true; sum[minIndex] += dist1[minIndex]; for(j = 1; j <= n; j++){ if(!used[j] && dist1[j] > dist1[minIndex]+G[minIndex][j]){ dist1[j] = dist1[minIndex]+G[minIndex][j]; } } } } void reverse(){ int i,j,temp; for(i = 1; i <= n; i++){ for(j = 1; j < i; j++){ temp = G[i][j]; G[i][j] = G[j][i]; G[j][i] = temp; } } } int main(){ int max = 0,i; in(); dijkstra(); reverse(); dijkstra(); for(i = 1; i <= n; i++) if(max < sum[i]) max = sum[i]; cout << max << endl; return 0; }
相关文章推荐
- poj 3268 Silver Cow Party , spfa , dijkstra
- 图论 ---- spfa + 链式向前星 ---- poj 3268 : Silver Cow Party
- poj 3268 Silver Cow Party(最短路)
- 文章标题 POJ 3268 : Silver Cow Party (最短路--spfa)
- 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 最短路
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party(最短路径dijkstra算法)
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
- POJ-3268-Silver Cow Party
- POJ 3268 Silver Cow Party 正反单源最短路
- POJ 3268 Silver Cow Party
- POJ-3268-Silver Cow Party [最短路][Dijkstra]
- Dijkstra-POJ-3268-Silver Cow Party
- poj 3268 Silver Cow Party (dijkstra+置换矩阵处理)
- POJ 3268 Silver Cow Party(最短路dijkstra)
- POJ 3268:Silver Cow Party 求单点的来回最短路径