1596 最短路径的变形

Posted 青春的梦想付诸行动

tags:

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

题目:

 

回顾一下。。

直接用dijkstra算法。。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
double G[1010][1010];//二维数组的存储
int n,s,t;//

void dijkstra(int s,int t)
{
     bool vis[1010];
     double dis[1010];//保存最安全路径;
     int i,j,k;
     
     for(int i=1;i<=n;i++)
          dis[i]=G[s][i];
     memset(vis,false,sizeof(vis));
     dis[s]=0;
     vis[s]=true;
     for(i=1;i<n;i++)
     {
          k=-1;
          for(j=1;j<=n;j++)
          {
               if(!vis[j]&&(k==-1||dis[k]<dis[j]))
                    k=j;
          }
          if(k==-1)      //图不连通
               break;
          vis[k]=true;
          for(j=1;j<=n;j++)
               if(!vis[j]&&dis[j]<dis[k]*G[k][j])
                    dis[j]=dis[k]*G[k][j];
     }
     if(dis[t])
          printf("%.3lf\n",dis[t]);
     else
          printf("What a pity!\n");
}
int main()
{
     while(~scanf("%d",&n))
     {
          int x;
          for(int i=1;i<=n;i++)
          {
               for(int j=1;j<=n;j++)
               {
                    scanf("%lf",&G[i][j]);
               }
          }
          scanf("%d",&x);
          while(x--)
          {
               scanf("%d%d",&s,&t);
               dijkstra(s,t);
          }
     }
     return 0;
}
               

 

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

HDU1596 find the safest road---(最短路径dijkstra,#变形#)

POJ 3255 Roadblocks (Dijkstra求最短路径的变形)(Dijkstra求次短路径)

浙大PAT CCCC L3-014 周游世界 ( 最短路变形 )

HDU 1596

最短路径题目

1003. Emergency