find the safest road

来源:互联网 发布:反射原理java 编辑:程序博客网 时间:2024/05/30 02:26

http://acm.hdu.edu.cn/showproblem.php?pid=1596

#include<iostream>

#include<cstdio>
#include<cstring>
using namespace std;
int n;
double line[1010][1010],dist[1010];
int book[1010];
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lf",&line[i][j]);
int m;
cin>>m;
int t1,t2;
while(m--)
{
memset(book,0,sizeof(book));
int k;
scanf("%d%d",&t1,&t2);
for(int i=1;i<=n;i++)
dist[i]=line[t1][i];
book[t1]=1;
for(int i=1;i<n;i++)
{
double max=-1;//这里写成了max=0结果就错了很久
for(int j=1;j<=n;j++)
if(max<dist[j] && !book[j])
{
max=dist[j];
k=j;
}
book[k]=1;
for(int j=1;j<=n;j++)
if(!book[j] && dist[j]<dist[k]*line[k][j])
dist[j]=dist[k]*line[k][j];
}
if(dist[t2]!=0)
printf("%.3f\n",dist[t2]);
else
cout<<"What a pity!"<<endl;
}
}
return 0;
}
0 0
原创粉丝点击