UVA - 10048 Audiophobia floyd的变形
2014-12-03 08:14
281 查看
题目大意:给出一张图,从起点走到终点,要求走的路程中路的权值的最大值达到最小
解题思路:floyd算法变形,设dp[i][j]为从i到j的权值的最大值的最小值,则dp[i][j] = min(dp[i][j],max(dp[i][k],dp[k][j])),dp[i][k]和dp[k][j]必须是连通的,这题相当于是DP题;}
解题思路:floyd算法变形,设dp[i][j]为从i到j的权值的最大值的最小值,则dp[i][j] = min(dp[i][j],max(dp[i][k],dp[k][j])),dp[i][k]和dp[k][j]必须是连通的,这题相当于是DP题;}
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define maxn 1005 int dis[maxn][maxn],f[maxn][maxn]; int c,s,q; int main() { int mark = 1, bo = 1; while(scanf("%d%d%d",&c,&s,&q) != EOF && c + s + q) { if(bo) bo = 0; else printf("\n"); for(int i = 1; i <= c; i++) for(int j = 1; j <= c; j++) if(i == j) f[i][j] = 0; else f[i][j] = -1; int t1,t2,len; for(int i = 1; i <= s; i++) { scanf("%d%d%d",&t1,&t2,&len); f[t1][t2] = f[t2][t1] = len; } for(int k = 1; k <= c; k++) for(int i = 1; i <= c; i++) for(int j = 1; j <= c; j++) if(f[i][k] != -1 && f[k][j] != -1) { int temp = max(f[i][k],f[k][j]); if( f[i][j] == -1 || f[i][j] > temp) f[i][j] = temp; } int start,end; printf("Case #%d\n",mark++); for(int i = 0; i < q; i++) { scanf("%d%d",&start,&end); if(f[start][end] == -1) printf("no path\n"); else printf("%d\n",f[start][end]); } } return 0; }
相关文章推荐
- uva 10048 - Audiophobia(floyd 的变形)
- 噪音恐惧症(Audiophobia,UVa10048)——floyd变形,最大最小化
- UVa 10048 (Floyd变形) Audiophobia
- UVa 10048 Audiophobia / floyd变形
- uva 10048 Audiophobia floyd的变形
- UVa - 10048 - Audiophobia ( Floyd 变形 )
- uva 10048 - Audiophobia(floyd 的变形)
- UVA 10048 Audiophobia(Floyd变形)
- UVa--10048 Audiophobia(floyd)
- uva_10048_Audiophobia(floyd)
- UVa 10048 - Audiophobia(Floyd, Kruskal)
- UVA - 10048 Audiophobia Floyd
- Uva 10048 Audiophobia 【floyd】
- UVA 10048 - Audiophobia(floyd)
- uva 10058 Audiophobia floyd变形
- Uva - 10048 - Audiophobia(Floyd)
- UVa 10048 Audiophobia(Floyed变形)
- UVA 10048 Audiophobia(Floyd)
- uva 10048 Audiophobia(floyd)
- POJ 3615 Cow Hurdles ,floyd 修改 , UVa 10048 Audiophobia