POJ 2263 Heavy Cargo(Floyd变形)
2014-07-13 15:06
435 查看
POJ 2263 Heavy Cargo(Floyd变形)
http://poj.org/problem?id=2263
题意:
给你一个无向图,图中每条路有一个负重限制v.现在要你求从A点到B的的所有可能路径中,负重量最大的那个值(那条边的负重值).即假设从A到B有一条路径,该路径包括负重为10,20,30,5的4条路.那么该路径的负重就是5.现在我们要求一条负重值最大的路.
分析:
此题可由floyd算法解.我们用d[i][j]表示从i到j的路径中的负重值最大者,且d[i][j]==0表示此路不通.每次用d[i][k]+d[k][j]更新d[i][j]时,我们都用大的值去更新小的值.这样得到的新路径的负重值自然更大.
其实这个思想就是floyd的动态规划思想,具体细节体会代码。
AC代码:
http://poj.org/problem?id=2263
题意:
给你一个无向图,图中每条路有一个负重限制v.现在要你求从A点到B的的所有可能路径中,负重量最大的那个值(那条边的负重值).即假设从A到B有一条路径,该路径包括负重为10,20,30,5的4条路.那么该路径的负重就是5.现在我们要求一条负重值最大的路.
分析:
此题可由floyd算法解.我们用d[i][j]表示从i到j的路径中的负重值最大者,且d[i][j]==0表示此路不通.每次用d[i][k]+d[k][j]更新d[i][j]时,我们都用大的值去更新小的值.这样得到的新路径的负重值自然更大.
其实这个思想就是floyd的动态规划思想,具体细节体会代码。
AC代码:
#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<map> #include<algorithm> #define INF 1e9 using namespace std; const int maxn = 200+10; int d[maxn][maxn]; int n,m; void floyd() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(d[i][k]>0 && d[k][j]>0) d[i][j] = max(d[i][j],min(d[i][k],d[k][j])); } int cnt; map<string,int> mp; int ID(string s) { if(mp.find(s)==mp.end()) mp[s]=++cnt; return mp[s]; } int main() { int kase=0; while(scanf("%d%d",&n,&m)==2&&n&&m) { cnt=0; mp.clear(); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j] = i==j? INF:0;//0表示此路不通,无法负重 while(m--) { string s1,s2; int weight; cin>>s1>>s2>>weight; int u = ID(s1),v=ID(s2); d[u][v]=d[v][u]=weight; } floyd(); string s1,s2; cin>>s1>>s2; int u = ID(s1),v=ID(s2); printf("Scenario #%d\n",++kase); printf("%d tons\n\n",d[u][v]); } return 0; }
相关文章推荐
- poj 2263 Heavy Cargo(floyd)
- [floyd]POJ 2263 Heavy Cargo
- poj2263 zoj1952 Heavy Cargo(floyd||spfa)
- poj 2263 Heavy Cargo(floyd)
- poj2263 Heavy Cargo(dijstra 变形)
- POJ 2263 Heavy Cargo (SPFA+Dijkstra,最短路变形)
- poj 2263 Heavy Cargo 最短路 变形
- POJ 2263 Heavy Cargo (SPFA+Dijkstra,最短路变形)
- poj 2263 Heavy Cargo
- poj 3615(floyd变形)
- POJ 2263 Heavy Cargo 最短路dijkstra
- POJ-2263 Heavy Cargo
- POJ 2263 floyd思想
- poj 2263 floyd+map
- poj 3615(floyd变形)
- POJ 2253 Frogger(最短路--floyd变形)
- poj 2253 Frogger(floyd变形)
- poj2240 Arbitrage 图论,Floyd变形
- POJ 2240 Arbitrage (Floyd最短路变形)
- (Relax dijkstra1.2)POJ 2263 Heavy Cargo(使用dijkstra来求解最大生成树问题)