HDOJ2544 ( 最短路 ) 【最短路径Dijkstra】

Problem : 2544 ( 最短路 )     Judge Status : Accepted
RunId : 6003616    Language : C++    Author : qq1203456195
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #define MAX 0x3f3f3f3f
 5 #define N 105
 6 int cls[N],n,m;
 7 int map[N][N];
 8 int vis[N];
 9 void Dijkstra(int v)
10 {
11     int i,j,min,nxt;
12     for(i=1;i<=n;i++)    cls[i]=map[v][i];
13     memset(vis,0,sizeof(vis));
14     vis[v]=1;
15     for (i=1;i<n;i++)
16     {
17         min=MAX;
18         nxt=v;
19         for (j=1;j<=n;j++)
20         {
21             if(!vis[j]&&cls[j]<min)
22             {
23                 nxt=j;
24                 min=cls[j];
25             }
26         }
27         vis[nxt]=1;
28         for (j=1;j<=n;j++)
29         {
30             if(!vis[j]&&map[nxt][j]<MAX&&(min+map[nxt][j])<cls[j])
31                 cls[j]=cls[nxt]+map[nxt][j];
32         }
33     }
34 }
35 int main()
36 {
37     int a,b,c;
38     while(scanf("%d%d",&n,&m),m||n)
39     {
40         memset(map,MAX,sizeof(map));
41         while (m--)
42         {
43             scanf("%d%d%d",&a,&b,&c);
44             if(map[a][b]>c)    map[a][b]=map[b][a]=c;
45         }
46         Dijkstra(1);
47         printf("%d\n",cls[n]);
48     }
49     return 0;
50 }
字节跳动内推

找我内推: 字节跳动各种岗位
作者: ZH奶酪(张贺)
邮箱: cheesezh@qq.com
出处: http://www.cnblogs.com/CheeseZH/
* 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/CheeseZH/p/2519418.html