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 ; }
hdu 1596 find the safest road 最短路 FLoyd算法
原文:http://blog.csdn.net/lionel_d/article/details/44672945