UVA 10048 Audiophobia 任意两点的路径上最大的边
2013-08-03 14:15
267 查看
题目是要求任意给定两点的的路径上最大的边,最终输出这些最大边中最小的值,也就是求一条路径使得这条路径上最大的边在所有连通两点的路径中最短。
根据Floyd—Warshall算法改造一下就行了。dp[i][j]表示i,j两点的连通路径中最大边的最小值。
根据Floyd—Warshall算法改造一下就行了。dp[i][j]表示i,j两点的连通路径中最大边的最小值。
#include<stdio.h> #include<string.h> #define N 110 #define INF 999999999 #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)>(b)?(b):(a)) int dp ; int main(void) { int ct=0,c,s,q; int i,j,k,a,b,d; while(scanf("%d%d%d",&c,&s,&q)&&(c||s||q)) { ct++; if(ct!=1) puts(""); printf("Case #%d\n",ct); memset(dp,0,sizeof(dp)); while(s--) { scanf("%d%d%d",&a,&b,&d); dp[a][b]=dp[b][a]=d; } for(i=1; i<N; i++) for(j=1; j<N; j++) if(i-j) if(!dp[i][j]) dp[i][j]=INF; int temp; for(k=1; k<=c; k++) for(i=1; i<=c; i++) for(j=1; j<=c; j++) { temp=max(dp[i][k],dp[k][j]);/*求i和k,k和j连通路径最大边中较大的值。*/ dp[i][j]=min(temp,dp[i][j]);/*将得到的较大值和原来的dp[i][j]进行比较取较小的值更新dp[i][j]*/ } while(q--) { scanf("%d%d",&a,&b); if(dp[a][b]==INF) puts("no path"); else printf("%d\n",dp[a][b]); } } return 0; }
相关文章推荐
- 11.3.4-uva10048-floyd变形-两点之间路径上最大边的最小值
- 11.3.4 例题11-5 UVA 247 Audiophobia(两点间最大权最小_floyd()变形)
- UVA 10048 Audiophobia 任意两点的路径上最大的边
- uva 1201 最小路径覆盖 最大匹配
- 【原创】【算法】【ygylca】狭义带权并查集求lca两点之间路径最大路问题。
- Uvalive 4267 Finding The Heaviest Path (Regionals 2008 Asia Taipei +DFS结点最大权值路径)
- Taxi Cab Scheme UVALive - 3126 最小路径覆盖解法(必须是DAG,有向无环图) = 结点数-最大匹配
- HDU 4183 Pahom on Water(最大流,判断两点间无相同点的简单路径的条数)
- POJ 2253 Frogger (求某两点之间所有路径中最大边的最小值)
- UVa 10803 Thunder Mountain (任意两点最短路的最大值+Floyd)
- UVA 10735 最大流 混合欧拉回路 输出路径
- uva 10740 Not the Best 两点之间的K短路径
- UVA 10735 最大流 混合欧拉回路 输出路径
- UVA - 10913 Walking on a Grid DAG路径最大值
- 【OI杂记】求二叉树上任意两点的最短路径上的边权最大值
- hdu 3938 Portal 计算两点路上最大距离中的最小值<=L的路径个数 离线并查集
- [网络流24题] 06 最长递增子序列(最多不相交路径,最大流)
- UVA-11248 Frequency Hopping (最大流+最小割)
- UVA - 1400(区间连续最大和)
- UVA NO.624 CD(打印路径,简单背包问题)