该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//运筹学之最短路径

#include

#include

#define M 99999

int main()

{

int G[100][100];

int n;

int p[100],flag[100],s[100];

int cur;

int m,k,l,i,j;

ifstream fin("in.txt");

//enter

fin>>n;

for(i=0;i

for(j=0;j

G[i][j]=M;

for(i=0;i

{

fin>>m;

for(j=0;j

{

fin>>k>>l;

G[i][k-1]=l;

}

}

for(i=0;i

{

flag[i]=0;

s[i]=M;

}

cur=0;

flag[cur]=1;

s[cur]=0;

p[cur]=0;

for(i=1;i

{

for(j=0;j

{

if(flag[j]==0)

{

m=s[cur]+G[cur][j];

if(m

{

s[j]=m;

p[j]=cur;

}

}

}

m=M;

for(j=0;j

{

if(flag[j]==0)

{

if(s[j]

{

m=s[j];

cur=j;

}

}

}

flag[cur]=1;

if(s[cur]==M)

{

//continue;

p[cur]=0;

for(j=0;j

if(flag[j]==0)

{

s[j]=M;

p[j]=0;

flag[j]=1;

}

break;

}

}

ofstream fout("out.txt");

for(i=1;i

{

if(s[i]==M)

{

cout<

fout<

}

else

{

cout<

cout<

fout<

fout<

k=p[i];

cout<

fout<

while(k!=0)

{

k=p[k];

cout<

fout<

}

}

cout<

fout<

}

return 0;

}

测试数据:

11

2 2 2 4 8

2 5 1 4 6

2 7 9 1 1

1 3 7

2 9 1 4 5

3 5 3 4 1 7 4

3 4 7 9 3 10 1

2 5 2 11 9

2 6 6 8 7

2 9 1 11 4

1 9 2

11表示有11个顶点的图

2 2 2 4 8

2表示第一个顶点射出2条线,2 2表示1->2的长度为2。。。。。。。。

输出数据:

从第1个点到第2的最短路为:2.

路径为:2

从第1个点到第3的最短路为:15.

路径为:3

从第1个点到第4的最短路为:8.

路径为:4

从第1个点到第5的最短路为:3.

路径为:5

从第1个点到第6的最短路为:10.

路径为:6

从第1个点到第7的最短路为:14.

路径为:7

从第1个点到第8的最短路为:11.

路径为:8

从第1个点到第9的最短路为:4.

路径为:9

从第1个点到第10的最短路为:15.

路径为:10

从第1个点到第11的最短路为:19.

路径为:11

最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法相关推荐

  1. >算法笔记-动态规划-最短路径迪杰斯特拉算法

    算法笔记-动态规划-最短路径迪杰斯特拉算法 作者:星河滚烫兮 前言   图的最短路径问题在现实生活中有很广阔的应用,最短路径又分为单源最短路径与多源最短路径,前者求出固定起点到其他节点的最短路径,后者 ...

  2. c语言迪杰斯特拉算法求最短路径,迪杰斯特拉 ( Dijkstra ) 最短路径算法

    迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径.它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本 ...

  3. 最短路径 - 迪杰斯特拉(Dijkstra)算法

    对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终点.最短路径的算法主要有迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd ...

  4. 简述dijkstra算法原理_理解最短路径——迪杰斯特拉(dijkstra)算法

    1.       迪杰斯特拉算法简介 迪杰斯特拉(dijkstra)算法是典型的用来解决最短路径的算法,也是很多教程中的范例,由荷兰计算机科学家狄克斯特拉于1959年提出,用来求得从起始点到其他所有点 ...

  5. 六、最短路径——迪杰斯特拉(Dijkstra)算法

    在网图和非网图中,最短路径的含义是不同的.由于非网图它没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径:而对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并 ...

  6. 最短路径——迪杰斯特拉算法——图的数据结构

    最短路径是在工程上经常用到的概念,在这里给出了从单源点到任意顶点的迪杰斯特拉算法. 先来看看基本概念: 用代码C语言实现如下: #include<string.h>#include< ...

  7. 【图】最短路径--迪杰斯特拉(Dijkdtra)算法

    迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 算法思想 每次找到离源 ...

  8. 别说了,世界那么大我想去看看!(最短路径-迪杰斯特拉算法弗洛伊德算法)

    前言: 一直想去外面的世界看看,中国城市那么多,那么美,怎么样才可以用最少的钱,最短的时间游遍我想去的城市呢?(我在做梦?不不不!迪杰斯特拉算法和弗洛伊德算法来了)      这两个算法有着广泛的用途 ...

  9. 最短路径迪杰斯特拉算法--邻接矩阵

    一.算法介绍 迪杰斯特拉算法(解决单源最短路径) 基本思想:每次找到离源点(如1号节点)最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径. 基本步骤:1,设置标记数组bo ...

最新文章

  1. SAP QM 内向交货单在完成包装之后就自动触发了检验批?
  2. HTML5实例教程:OL标签的start属性和reversed属性
  3. Maven resource标签
  4. 用原生js封装get方法
  5. python读取数据库导出文件_python如何导出excel表格数据库数据
  6. 如何查看电脑是几核几线程
  7. LoadDruidSegmentStep failed SQLException: Cannot load JDBC driver class ‘com.mysql.jdbc.Driver‘
  8. puppet的配置清单书写
  9. 【转载】DEDE与DISCUZ整合积分同步[会员表,积分表
  10. POJ 3368 Frequent values
  11. freesurfer recon-all命令
  12. rpi4 实现 qiuqiu - Ultralight-SimplePose
  13. selenium 鼠标悬停事件
  14. Python-Level1-day16:异常处理try-exceptraise语句,for迭代原理,深入手写创建迭代器;yield浅出使用生成器
  15. Click Once使用总结
  16. 9.什么是向上转型?什么是向下转型?
  17. Spring MVC源码 ----- @RequestBody和@ResponseBody原理解析
  18. [k8s]一步一步学习k8syaml
  19. umix6适配鸿蒙系统吗,深度剖析测评优学派u36和umix6区别如何?哪个好?详细剖析测评...
  20. MybatisPlus_${ew.sqlSelect},${ew.sqlSet},${ew.sqlSegment},${ew.customSqlSegment}的使用

热门文章

  1. LeetCode_树类
  2. 正则(身份证,手机号,邮箱,正整数)
  3. springboot工程中使用spring.version导致无法启动
  4. 揭秘各国总统们钟爱的手机
  5. 8-th Android开发之服务器端
  6. LINQ系列:LINQ to SQL Join连接
  7. 25 个超棒的 WordPress 主题(2012)
  8. 想知道大家毕业后的发展道路
  9. 网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  10. 重庆大学光电工程学院 贾旭滨 对 “句柄” “指针” 有下面的描述(AfxGetMainWnd GetSafeHwnd() AfxGetAppName() AfxGetThread)...