zoukankan      html  css  js  c++  java
  • 最短路

    HDOJ 2544 最短路 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2544

    【code】(dijkstra):

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 #define maxn 1001
     6 int map[maxn][maxn];
     7 int dijkstra(int from,int to,int n)
     8 {
     9     int dij[maxn],i,k;
    10     bool used[maxn];
    11     memset(used,false,sizeof(used));
    12     for(i=1;i<=n;i++)
    13         dij[i]=INT_MAX;
    14     dij[from]=0;
    15     used[from]=true;
    16     int now=from;
    17     for(i=1;i<n;i++)
    18     {
    19         for(k=1;k<=n;k++)
    20             if(map[now][k]&&dij[k]>dij[now]+map[now][k])
    21                 dij[k]=dij[now]+map[now][k];
    22         int min=INT_MAX;
    23         for(k=1;k<=n;k++)
    24             if(!used[k]&&dij[k]<min)
    25                 min=dij[now=k];
    26         used[now]=true;
    27     }
    28     return dij[to];
    29 }
    30 int main()
    31 {
    32     int n,m,a,b,c,i,l;
    33     while(~scanf("%d%d",&n,&m))
    34     {
    35         if(n==0&&m==0)
    36             break;
    37         memset(map,0,sizeof(map));
    38         for(i=0;i<m;i++)
    39         {
    40             scanf("%d%d%d",&a,&b,&c);
    41             if(c<map[a][b]&&map[a][b]||!map[a][b])
    42             {
    43                 map[a][b]=c;
    44                 map[b][a]=c;
    45             }
    46         }
    47         l=dijkstra(1,n,n);
    48         printf("%d\n",l);
    49     }
    50     return 0;
    51 }

    【code】(floyd):

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 #define maxn 1001
     6 int map[maxn][maxn];
     7 int main()
     8 {
     9     int n,m,a,b,c,i,j,k;
    10     while(~scanf("%d%d",&n,&m))
    11     {
    12         if(n==0&&m==0)
    13             break;
    14         for(i=1;i<=n;i++)
    15             for(j=1;j<=n;j++)
    16                 map[i][j]=9999999;
    17         for(i=0;i<m;i++)
    18         {
    19             scanf("%d%d%d",&a,&b,&c);
    20             if(c<map[a][b])
    21             {
    22                 map[a][b]=c;
    23                 map[b][a]=c;
    24             }
    25         }
    26         for(k=1;k<=n;k++)
    27             for(i=1;i<=n;i++)
    28                 for(j=1;j<=n;j++)
    29                     if(map[i][k]+map[k][j]<map[i][j])
    30                         map[i][j]=map[i][k]+map[k][j];
    31         printf("%d\n",map[1][n]);
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    javascript规范
    freemarker规范
    java代码质量
    使用ESP8266制作一个微型气象站
    热风枪焊接表面贴装元件的工具和技巧
    MCUXpresso IDE:导入Kinetis Design Studio工程
    基于LPCXpresso54608开发板创建Embedded Wizard UI应用程序
    STM32 LoRaWAN探索板B-L072Z-LRWAN1入门指南
    LPCXpresso54608开发板中文用户手册
    STM32 LoRaWAN探索板B-L072Z-LRWAN1中文用户手册
  • 原文地址:https://www.cnblogs.com/pony1993/p/2591638.html
Copyright © 2011-2022 走看看