poj1797 - Heavy Transportation(最大边,最短路变形spfa)
2014-12-09 10:32
357 查看
题目大意:
给你以T, 代表T组测试数据,一个n代表有n个点, 一个m代表有m条边, 每条边有三个参数,a,b,c表示从a到b的这条路上最大的承受重量是c,
让你找出一条线路,要求出在这条线路上的最小承重, 在所有其他线路最大。
题目分析:
这里只要将spfa进行一下变形就可以解决这问题了。
首先 我们的dist数组,起点位置要初始化为 INF, 其他位置初始化为 0
然后我们更新 dist 数组, 结果输出 dist
就行了
为什么这样写: 因为我们每次要找 所有路径中的最大边的最小一个, 说的可能有写绕口
递推式是: dist[e] = max(dist[e], min(dist[s], G[s][i]) );
下面是代码:
给你以T, 代表T组测试数据,一个n代表有n个点, 一个m代表有m条边, 每条边有三个参数,a,b,c表示从a到b的这条路上最大的承受重量是c,
让你找出一条线路,要求出在这条线路上的最小承重, 在所有其他线路最大。
题目分析:
这里只要将spfa进行一下变形就可以解决这问题了。
首先 我们的dist数组,起点位置要初始化为 INF, 其他位置初始化为 0
然后我们更新 dist 数组, 结果输出 dist
就行了
为什么这样写: 因为我们每次要找 所有路径中的最大边的最小一个, 说的可能有写绕口
递推式是: dist[e] = max(dist[e], min(dist[s], G[s][i]) );
下面是代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #include <vector> #include <queue> using namespace std; #define INF 0xfffffff #define maxn 1050 struct Edge { int e; long long w; }; vector<Edge> G[maxn]; long long dist[maxn]; bool vis[maxn]; int m, n; long long Spfa() { Edge P, Pn; P.e = 1, P.w = 0; queue <Edge> Q; Q.push(P); while( !Q.empty() ) { P = Q.front(); Q.pop(); vis[P.e] = false; int len = G[P.e].size(); for(int i=0; i<len; i++) { Pn = G[P.e][i]; if(dist[Pn.e] < min(dist[P.e],Pn.w) ) { dist[Pn.e] = min(dist[P.e],Pn.w); if(!vis[Pn.e]) { vis[Pn.e] = true; Q.push(Pn); } } } } return dist ; } void Init() { for(int i=1; i<=n ;i++) { G[i].clear(); vis[i] = false; dist[i] = 0; } dist[1] = INF; } int main() { int T, cas = 1; Edge P; cin >> T; while(T--) { scanf("%d%d",&n,&m); Init(); for(int i=0; i<m; i++) { int a, b, c; scanf("%d%d%d",&a,&b,&c); P.e = b, P.w = c; G[a].push_back(P); P.e = a; G[b].push_back(P); } long long ans = Spfa(); printf("Scenario #%d:\n%lld\n",cas++,ans); if(T) printf("\n"); } return 0; }
相关文章推荐
- POJ - 1797 Heavy Transportation(最短路变形,SPFA,Dijkstra)
- POJ - 1797(最短路变形or最大生成树)
- POJ 1797 Heavy Transportation(最大生成树/最短路变形)
- (POJ 1797)Heavy Transportation 最大生成树|最短路变形 (理解最短路核心思想好题)
- HDU1317 变形SPFA 求最大路 判断正环 点权替代边权 最短路求法灵活应用
- 【最短路入门专题1】E - Heavy Transportation Poj 1797【Dijkstra变形题】
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形
- POJ 1797 Heavy Transportation (最短路变形)
- POJ 2253 - 最短路变形 SPFA+Dijstra
- poj 1797 Heavy Transportation (spfa 最短路 )
- poj 1797 最短路变形dijkstra
- POJ 1797 Heavy Transportation&&POJ 2253 Frogger 最短路 dijkstra变形
- POJ 1797 最大负载【最短路】
- Poj 1797 Heavy Transportation (最短路变形)
- poj 1797(最短路变形)
- POJ 2263 Heavy Cargo (SPFA+Dijkstra,最短路变形)
- POJ 1797 Heavy Transportation【Dijkstra最短路变形】
- POJ 1797 Heavy Transportation Dijstr最短路变形
- POJ 2263 Heavy Cargo (SPFA+Dijkstra,最短路变形)
- poj1797 Heavy Transportation(最短路变形)