UVa 10048 - Audiophobia
2014-04-27 15:15
323 查看
题目:在一个城市里,每条道路上都有噪音,你要从A点走到B点,找出一条道路,使最大的噪音最小。
分析:最短路、最小生成树。当计算图中某条路径上的线段最大值最小类似的问题。
可以利用最小生成树或最短路算法。更新时取最值即可。
说明:由于本题查找较多,需要计算多元最值,所以采用floyd算法。
分析:最短路、最小生成树。当计算图中某条路径上的线段最大值最小类似的问题。
可以利用最小生成树或最短路算法。更新时取最值即可。
说明:由于本题查找较多,需要计算多元最值,所以采用floyd算法。
#include <stdio.h> #include <stdlib.h> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) int path[101][101]; int main() { int C,S,Q,a,b,c,Case = 0;; while ( scanf("%d%d%d",&C,&S,&Q) && C+S+Q ) { if ( Case ++ ) printf("\n"); printf("Case #%d\n",Case); for ( int i = 1 ; i <= C ; ++ i ) for ( int j = 1 ; j <= C ; ++ j ) path[i][j] = -1; for ( int i = 1 ; i <= S ; ++ i ) { scanf("%d%d%d",&a,&b,&c); path[a][b] = path[b][a] = c; } //floyd for ( int k = 1 ; k <= C ; ++ k ) for ( int i = 1 ; i <= C ; ++ i ) for ( int j = 1 ; j <= C ; ++ j ) if ( path[i][k] != -1 && path[k][j] != -1 ) { int temp = max( path[i][k], path[k][j] ); if ( path[i][j] == -1 ) path[i][j] = temp; if ( path[i][j] > temp ) path[i][j] = temp; } for ( int i = 1 ; i <= Q ; ++ i ) { scanf("%d%d",&a,&b); if ( path[a][b] == -1 ) printf("no path\n"); else printf("%d\n",path[a][b]); } } return 0; }
相关文章推荐
- UVa 10048 - Audiophobia
- PC/UVa 110903/10099 The Tourist Guide & UVa 10048 Audiophobia
- UVa10048 Audiophobia
- uva 10048 Audiophobia floyd的变形
- UVA 10048 Audiophobia
- UVA 10048 Audiophobia(Floyd算法)
- Uva10048——Audiophobia
- UVA - 10048 Audiophobia (Floyd算法)
- 噪音恐惧症(Audiophobia,UVa10048)——floyd变形,最大最小化
- UVa 10048 Audiophobia(Floyed变形)
- Uva - 10048 - Audiophobia(Floyd)
- UVa 10048 Audiophobia (任意两点最长边的最小化)
- uva_10048 Audiophobia
- UVa 10048 - Audiophobia(Floyd, Kruskal)
- uva 10048 - Audiophobia
- UVA 10048 Audiophobia(Floyd变形)
- (UVA - 10048) Audiophobia(floyd算法)
- uva10048 - Audiophobia()
- Audiophobia - UVa 10048 Floyd
- Audiophobia UVA - 10048