#include<iostream>
#include<stdio.h>
using namespace std;
#define MAX 1005
//#define MAX 10
double graph[MAX][MAX];
double Dis[MAX][MAX];
int n;int Q;
int main()
{
//freopen("in.txt","r",stdin);
int i,j,k;
while(scanf("%d",&n)!=EOF)
{
//初始化
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>graph[i][j];
}
}
//初始化Dis
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
Dis[i][j]=graph[i][j];
}
}
//Floyd算法
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(Dis[i][k]*Dis[k][j]>Dis[i][j])
{
Dis[i][j]=Dis[i][k]*Dis[k][j];
}
}
}
}
//输出
scanf("%d",&Q);int start,end;
for(i=0;i<Q;i++)
{
scanf("%d %d",&start,&end);
if(Dis[start-1][end-1]==0)
cout<<"What a pity!"<<endl;
else
{
printf("%0.3f\n",Dis[start-1][end-1]);
}
}
}
return 0;
}
hdoj 1596(floyd)(c++过啦)
最新推荐文章于 2024-11-09 20:38:27 发布