题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1596
题目思路:最短路变形~最开始的时候他输入的矩阵没弄明白,纠结了好一会。。因为是问好多个,所以用的是floyd算法。。这个的确省事。。
AC代码:
#include<stdio.h>
#include<string.h>
int n;
double map[1002][1002];
void floyd()
{
int i,j,k;
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(map[i][j]<map[i][k]*map[k][j])
map[i][j]=map[i][k]*map[k][j];
}
int main()
{
while(~scanf("%d",&n))
{
int i,j,q;
memset(map,0,sizeof(map));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%lf",&map[i][j]);
scanf("%d",&q);
floyd();
while(q--)
{
scanf("%d%d",&i,&j);
if(map[i][j])printf("%.3f\n",map[i][j]);
else printf("What a pity!\n");
}
}
return 0;
}
AC截图: