hdu 1596 find the safest road 最短路 FLoyd算法
find the safest road
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7892 Accepted Submission(s): 2798
第一行:n。n表示城市的个数n<=1000;
接着是一个n*n的矩阵表示两个城市之间的安全系数,(0可以理解为那两个城市之间没有直接的通道)
接着是Q个8600要旅游的路线,每行有两个数字,表示8600所在的城市和要去的城市
其他的输出这两个城市之间的最安全道路的安全系数,保留三位小数。
3 1 0.5 0.5 0.5 1 0.4 0.5 0.4 1 3 1 2 2 3 1 3
0.500 0.400 0.500
#include <stdio.h> #define MAX 1010 double dp[MAX][MAX] ; double max(double a , double b) { return a>b?a:b ; } void floyd(int n) { for(int k = 1 ; k <= n ; ++k) { for(int i = 1 ; i <= n ; ++i) { for(int j = 1 ; j <= n ; ++j) { dp[i][j] = max(dp[i][j],dp[i][k]*dp[k][j]) ; } } } } int main() { int n ; while(~scanf("%d",&n)) { for(int i = 1 ; i <= n ; ++i) { for(int j = 1 ; j <= n ; ++j) { scanf("%lf",&dp[i][j]) ; } } int m ; floyd(n) ; scanf("%d",&m) ; for(int i = 0 ; i < m ; ++i) { int x , y; scanf("%d%d",&x,&y) ; if(dp[x][y] == 0) { puts("What a pity!") ; } else { printf("%.3lf\n",dp[x][y]) ; } } } return 0 ; }
与君共勉
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。