hdu1596 find the safest road

来源:互联网 发布:郭靖黄蓉爱情知乎 编辑:程序博客网 时间:2024/05/21 09:50
//最大安全系数;dijkstra由最小路径改成最大路径
#include <stdio.h>#define INF -99.0#define MAXN 1002double map[MAXN][MAXN],safe[MAXN];int visited[MAXN];void Dijkstra(int s,int t,int n){int i,j,u;double max;for (i=1;i<=n;i++){safe[i]=map[s][i];visited[i]=0;}visited[s]=1;safe[s]=1;for (i=1;i<=n;i++){max=INF;for (j=1;j<=n;j++){if(!visited[j]&&max<safe[j]){max=safe[j];u=j;}}visited[u]=1;if(max==INF)break;for(j=1;j<=n;j++)if(!visited[j]&&safe[j]<map[u][j]*safe[u])safe[j]=map[u][j]*safe[u];}}int main(){int n,i,j,Q,st,end;while(scanf("%d",&n)!=EOF){for (i=1;i<=n;i++){for(j=1;j<=n;j++)scanf("%lf",&map[i][j]);}scanf("%d",&Q);    while(Q--){scanf("%d %d",&st,&end);Dijkstra(st,end,n);if(safe[end])printf("%.3lf\n",safe[end]);elseprintf("What a pity!\n");}}return 0;}

原创粉丝点击