标签:hdoj 1596
3 1 0.5 0.5 0.5 1 0.4 0.5 0.4 1 3 1 2 2 3 1 3
0.500 0.400 0.500
基础最短路径题,没有什么好说的,自己看吧。
代码:
#include<cstdio>
#include<cstring>
#define max(x,y) (x>y?x:y)
const int INF=0x3f3f3f3f;
int n,m;
double map[1010][1010];
double dis[1010];
bool vis[1010];
void dij(int s)
{
memset(dis,0,sizeof(dis));
memset(vis,false,sizeof(vis));
dis[s]=1;
while(true)
{
int v=-1;
for(int i=1;i<=n;i++)
if(!vis[i]&&(v==-1||dis[v]<dis[i]))
v=i;
if(v==-1)
break;
vis[v]=true;
for(int j=1;j<=n;j++)
dis[j]=max(dis[j],dis[v]*map[v][j]);
}
}
int main()
{
double a;
memset(map,0,sizeof(map));
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lf",&map[i][j]);
scanf("%d",&m);
int x,y;
while(m--)
{
scanf("%d%d",&x,&y);
dij(x);
if(dis[y]<1e-6)
printf("What a pity!\n");
else
printf("%.3lf\n",dis[y]);
}
}
return 0;
}
版权声明:博主情人,外人误碰!!!
hdoj 1596 find the safest road 【dijkstra】
标签:hdoj 1596
原文地址:http://blog.csdn.net/qq_21654717/article/details/47731861