#include <cstdio>
#include <string.h>
#define Max(x,y) ( (x) > (y) ? (x) : (y) )
using namespace std;
const int maxn = 1005;
int n;
double map[maxn][maxn];
double s[maxn][maxn];
void F_W()
{
for(int k = 1;k <= n;k++)
{
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= n;j++)
{
s[i][j] = Max(s[i][j],s[k][j]*s[i][k]);
}
}
}
return ;
}
int main()
{
while(scanf("%d",&n) != EOF)
{
int i,j;
for(i = 1;i <= n;i++)
{
for(j = 1;j <= n;j++)
{
scanf("%lf",&map[i][j]);
s[i][j] = map[i][j];
}
}
F_W();
int num;
scanf("%d",&num);
int start,end;
while(num--)
{
scanf("%d%d",&start,&end);
if(s[start][end] > 0)
printf("%.3lf\n",s[start][end]);
else
printf("What a pity!\n");
}
}
return 0;
}
Floy-Warshall算法例题 HDU_1596题解
最新推荐文章于 2024-09-29 13:43:54 发布