最短路算法(dijkstra)
2016-06-08 17:12
375 查看
#include<iostream> using namespace std; int edgs[100][100]; //边 int dist[MAXNUM]; //v0到各边的值 int prev[MAXNUM]; //前驱数组 void Dijkstra(int v0,int n) { bool S[MAXNUM]; //确定顶点是否在S集合中 for(int i=0;i<n;i++) { dist[i]=edgs[v0][i]; //vo到个点的初值 S[i]=false; //所有节点未加入S if(dist[i] ==MAXINT) { prev[i]=-1; //没有前驱节点 } else prev[i]=v0; } dist[v0] =0; S[v0]=true; /* 求v到v0的最短距离,将v加到S集中 */ for(int i=1;i<n;i++) { int min =MAXINT; int u=v0; //找到当前未使用点的DISJ[i]最小值 for(int j=0;j<n;j++) { if((!S[j]) && dist[j]<min) { u=j; min=dist[j]; } S[u]=true; //找到最短路径 加入顶点 //以新加入的节点 更新从 v0触发到集合V-S的顶点路径长度 for(int j=0;j<n;j++) if((!S[j]) && dist[u]+edgs[u][j]<dist[j]) //通过新加入节点找到更短路径 { dist[j]=dist[u]+edgs[u][j]; prev[j]=u; //更新前驱节点 } } } } int main() { int n; //图的顶点数 cin>>n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>edgs[i][j]; //边的权值 return 0; }
相关文章推荐
- Android平台生成二维码并实现扫描 & 识别功能
- leetcode 109. Convert Sorted List to Binary Search Tree-链表转树|指针|二分归并
- 站长如何屏蔽流氓宽带商在你的页面里面强行插入的广告代码
- android中的spannable的使用(TextView分段显示不同颜色,字体,时间 )
- while(true)引发的Dubbo应用假死
- 派生Cylinder类
- JQuery的ajaxFileUpload图片上传初试
- 蓝牙4.1技术解析-对比4.0主要在速度和配对上有突破性进步
- Alpha版总结会议
- new image的使用
- 15安徽省大学生程序设计大赛
- JosephRing约瑟夫环
- Java设计模式(十三) 别人再问你设计模式,叫他看这篇文章
- Android Binder 全解析(1) -- 概述
- wxWidgets Tips: 用 Visual Studio 2015 创建 wxWidgets 应用程序 (2)
- yii2.0-advanced 高级版项目搭建
- MyApplication
- Reactjs 入门基础(三)
- JAVA并发-减少锁的竞争
- Android App中的GridView网格布局使用指南