<菜鸟学算法-Dijkstra求最短路径>
来源:互联网 发布:知鱼怎么烧 编辑:程序博客网 时间:2024/05/16 08:07
<img src="http://img.my.csdn.net/uploads/201405/22/1400761299_7703.jpg" alt="" />
#include<stdio.h>#define INFINITE 10000int Graph[6][6]={{0,2,4,0,0,0}, /*建立一个有向图,0表示不通,非零为权值*/{0,0,5,6,9,0},{0,0,0,0,7,0},{0,0,0,0,2,3},{0,0,0,0,0,4},{0,0,0,0,0,0}};typedef struct vertex{int id;int min_path;}Vertex;struct ADJ{Vertex seq[10];int len;}S,U;void InitSU(){int i;S.seq[0].id=0;S.seq[0].min_path=0;S.len=1;U.len=0;for(i=0;i<5;i++){U.seq[i].id=i+1;U.seq[i].min_path=INFINITE;U.len++;}printf("U.len=%d\n",U.len);}void MoveMintoS(){int i,min;min=0;for(i=1;i<U.len;i++){if(U.seq[i].min_path<U.seq[min].min_path)min=i;}S.seq[S.len].id=U.seq[min].id;S.seq[S.len].min_path=U.seq[min].min_path;S.len++;for(i=min;i<U.len-1;i++)U.seq[i]=U.seq[i+1];U.len--;}void Dijkstra(){int i,j,k,min;while(S.len!=6){i=S.seq[S.len-1].id;for(k=0;k<U.len;k++){j=U.seq[k].id;if(Graph[i][j]==0) continue;min=Graph[i][j]+S.seq[S.len-1].min_path;if(U.seq[k].min_path>min) U.seq[k].min_path=min; }MoveMintoS();}}int main(int argc,char *argv[]){inti;InitSU();Dijkstra();for(i=1;i<S.len;i++)printf("The min_path form %d--->S(0) is:%d\n",S.seq[i].id,S.seq[i].min_path);return 0;}
0 0
- <菜鸟学算法-Dijkstra求最短路径>
- 菜鸟学算法之--Dijkstra最短路径算法
- dijkstra 求最短路径算法
- Dijkstra算法求最短路径
- Dijkstra 算法求最短路径
- Dijkstra算法求最短路径
- Dijkstra算法求最短路径
- Dijkstra 求最短路径算法
- Dijkstra算法 ---求最短路径
- Dijkstra算法求最短路径
- dijkstra算法求最短路径
- dijkstra算法求最短路径
- Dijkstra算法求最短路径
- dijkstra算法求最短路径
- 【算法】Dijkstra 求最短路径算法
- Dijkstra算法求最短路径(java)
- 求最短路径之Dijkstra算法
- 求最短路径Dijkstra算法C++
- THE DRUNK JAILER
- 个人重构机房收费系统——配置文件
- ubuntu安装netbeans方法及解决netbeans乱码方法
- 超级楼梯
- POJ1011-Sticks
- <菜鸟学算法-Dijkstra求最短路径>
- Java double 相乘的小问题记录
- ZOJ-2883
- 购买气球
- VC-"应用程序正常初始化失败"-0xc0150002
- Python日期操作
- django notes 2
- DllMain和多线程死锁
- 今日作息及食谱(5.22)