博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++实现图的单源最短路径
阅读量:7247 次
发布时间:2019-06-29

本文共 1656 字,大约阅读时间需要 5 分钟。

图的单源最短路径就是指,指定有向图的一个顶点,然后求得该顶点到达其它顶点的最短路;

 

算法描述:

 

void Dijkstra(C)

/*对给定的有向图,求从原点1到其余每个顶点的最短路径长*/

{

S ={1};/*1为源点*/

for(i =2 ;i <= n;i++)

{

  D[i] = C[i][j];

}

for(i =1; i<=n-1;i++)

{

  从V-S中选择一个w(顶点),使得D[w]的值最小;

  把w加入S;

  for(V-S中的每一个顶点v)

  {

    D[v] = min(D[v],D[w] +C[w][r]);

  }

}

}

 

算法还是比较简单的;接下来实现:

1 #include 
2 using namespace std; 3 4 //定义集合类: 5 class S 6 {
7 int* s; 8 int num; 9 int now; 10 public: 11 //初始化集合: 12 S(int n){
13 num = n; 14 s = new int[num]; 15 now = 0; 16 } 17 //添加元素到集合: 18 int addElementype(int a) 19 {
20 if(now < num) 21 { 22 if(isExist(a) == 0) 23 {
24 s[now] = a; 25 now++; 26 return 0; 27 } 28 else 29 return -1; 30 } 31 else 32 return 1; 33 34 } 35 //判断元素是否在集合中: 36 int isExist(int temp) 37 {
38 int flag =0; 39 for(int i =0 ;i
< number; i++) 75 {
76 C[i] = new int[number]; 77 } 78 for(int i =0 ;i
number-1) 94 {
95 cout<<"No that point!"<
a[i] ) 149 {
150 temp = i; 151 } 152 } 153 return temp; 154 } 155 156 int Min(int a,int b) 157 {
158 if(a>b) 159 return b; 160 else 161 return a; 162 }

程序很简单,一个小时就可以写出来;只要是算法思想没见过,就贴出来了。

转载于:https://www.cnblogs.com/chengzheqiao/archive/2011/10/22/2221434.html

你可能感兴趣的文章
SpringSecurity (Spring权限验证)
查看>>
MFC 实现CTreeCtrl单选
查看>>
HDU 1036 - Average is not Fast Enough!
查看>>
linux——vi和vim的区别
查看>>
分享一个彻底冻结对象的函数——来自阮一峰老师的《ECMAScript 6 入门》
查看>>
【开篇】基于C#+EmguCV的机器视觉平台开发
查看>>
HBase与MongDB等NoSQL数据库对照
查看>>
上海地铁游移动APP需求分析
查看>>
Behave + Selenium(Python) ------ (第二篇)
查看>>
用LabVIEW做声源定位系统
查看>>
JAVA中static关键字
查看>>
2018/9/26 10.36
查看>>
【模拟】牛慢跑
查看>>
元素的显示和隐藏:display、visibility、overflow
查看>>
各管理相关的工具和技术
查看>>
『004』索引-Python
查看>>
安装第三方模块
查看>>
SMTP
查看>>
用CSS实现的图片透明度链接效果代码
查看>>
大牛给计算机专业的七个建议
查看>>