zoukankan      html  css  js  c++  java
  • 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!
    ");
    37     else            printf("%.3lf
    ",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 } 

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

  • 相关阅读:
    接口和抽象类的异同点
    实体对象间传值克隆
    什么是反射&反射的8个类的用法
    ERP中反射的两个实例
    基础02 Java 跨平台原理
    基础01 dos命令
    lists删除
    多字段 java对象排序
    Java对象排序
    MySQL表中数据的迁移
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5225858.html
Copyright © 2011-2022 走看看