码迷,mamicode.com
首页 > 编程语言 > 详细

迪克斯特拉算法简单模板

时间:2016-08-02 20:42:25      阅读:462      评论:0      收藏:0      [点我收藏+]

标签:

 1 //这里选的是第一点作为起始点,按照所需修改
 2 const int maxs = 105;
 3 const int INF = 0x3f3f3f3f;
 4 int N;//点的总个数
 5 int edge[maxs][maxs];//点与点之间的距离关系
 6 void dijkstra()
 7 {
 8     int dist[maxs];//用来保存其它各点到选定点的最短距离
 9     bool vis[maxs];//判断该点是否已经加入到集合中了
10     memset(vis,false,sizeof(vis));
11     vis[1]=true;
12     for(int i=1;i<=N;i++)
13         dist[i]=edge[1][i];
14     for(int i=1;i<=N;i++)
15     {
16         int mins=INF,k;
17         for(int j=1;j<=N;j++)
18             if(!vis[j]&&dist[j]<mins)
19             {
20                 mins = dist[j];
21                 k=j;
22             }
23         vis[k]=true;//该点已经加入集合
24         //新的点加入,更新选定点到还没有被构造的点的最短距离
25         for(int j=1;j<=N;j++)
26             if(!vis[j]&&edge[k][j]<INF&&(dist[k]+edge[k][j])<dist[j])
27                 dist[j]=dist[k]+edge[k][j];
28     }
29 }

 

迪克斯特拉算法简单模板

标签:

原文地址:http://www.cnblogs.com/wt20/p/5730419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!