HDU 1596 也是最小路径Dijkstra

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1596 也是最小路径Dijkstra相关的知识,希望对你有一定的参考价值。

 1 #include<cstdio>
 2 #include<cmath>
 3 #include<cstring>
 4 const int qq=1000+10;
 5 double dist[qq];
 6 double city[qq][qq];
 7 int vis[qq];
 8 int n,m;
 9 int s,e;
10 void Dijkstra()
11 {
12     double MAX;
13     int u;
14     for(int i=1;i<=n;++i){
15         vis[i]=0;
16         dist[i]=city[s][i];
17     }
18     vis[s]=1;
19     for(int l=2;l<=n;++l){
20         MAX=0;u=s;
21         for(int i=1;i<=n;++i)
22             if(!vis[i] && dist[i] > MAX)
23                 MAX = dist[u=i];
24         if(MAX==0)    break;
25         if(u==e)    break;
26         vis[u]=1;
27         for(int i=1;i<=n;++i)
28             if(!vis[i]){
29                 if(dist[i]<dist[u]*city[u][i])
30                     dist[i]=dist[u]*city[u][i];
31                 if(dist[i]<dist[u]*city[i][u])
32                     dist[i]=dist[u]*city[u][i];
33             }
34 
35     }
36     if(u!=e)    printf("What a pity!\n");
37     else            printf("%.3lf\n",dist[e]);
38 }
39 int main()
40 {
41     while(~scanf("%d",&n)){
42         for(int j,i=1;i<=n;++i)    
43             for(j=1;j<=n;++j)
44                 scanf("%lf",&city[i][j]);
45         scanf("%d",&m);
46         for(int i=0;i<m;++i){
47             scanf("%d %d",&s,&e);
48             Dijkstra();
49         }
50     }
51 } 

 

将原来的+换成*就行了、模板懂了这题就是水题了

以上是关于HDU 1596 也是最小路径Dijkstra的主要内容,如果未能解决你的问题,请参考以下文章

HDU - 6386 Age of Moyu 2018 Multi-University Training Contest 7 (Dijkstra变型)

hdu1688(dijkstra求最短路和次短路)

hdu6005 Pandaland 想法+dijkstra

图论问题 : hdu 1102

hdu-2680 Choose the best route---dijkstra+反向存图或者建立超级源点

1596 最短路径的变形