题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1596
解题思路:
已经给你了 每条边的安全指数
所以只需要 求出 最大的安全路径就可以了
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int maxp = 1e3+10;
int safe[maxp];
double map[maxp][maxp];
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++)
map[i][j]=max(map[i][j],map[i][k]*map[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",&map[i][j]);
}
}
int m,s,e;
floyd(n);
scanf("%d", &m);
while(m--)
{
scanf("%d%d",&s,&e);
if(map[s][e]==0)
printf("What a pity!\n");
else
printf("%.3lf\n",map[s][e]);
}
}
return 0;
}