最短路径迪杰斯特拉算法 c语言,Dijkstra第K最短路径算法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//运筹学之最短路径
#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最短路径算法相关推荐
- >算法笔记-动态规划-最短路径迪杰斯特拉算法
算法笔记-动态规划-最短路径迪杰斯特拉算法 作者:星河滚烫兮 前言 图的最短路径问题在现实生活中有很广阔的应用,最短路径又分为单源最短路径与多源最短路径,前者求出固定起点到其他节点的最短路径,后者 ...
- c语言迪杰斯特拉算法求最短路径,迪杰斯特拉 ( Dijkstra ) 最短路径算法
迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径.它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本 ...
- 最短路径 - 迪杰斯特拉(Dijkstra)算法
对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终点.最短路径的算法主要有迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd ...
- 简述dijkstra算法原理_理解最短路径——迪杰斯特拉(dijkstra)算法
1. 迪杰斯特拉算法简介 迪杰斯特拉(dijkstra)算法是典型的用来解决最短路径的算法,也是很多教程中的范例,由荷兰计算机科学家狄克斯特拉于1959年提出,用来求得从起始点到其他所有点 ...
- 六、最短路径——迪杰斯特拉(Dijkstra)算法
在网图和非网图中,最短路径的含义是不同的.由于非网图它没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径:而对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并 ...
- 最短路径——迪杰斯特拉算法——图的数据结构
最短路径是在工程上经常用到的概念,在这里给出了从单源点到任意顶点的迪杰斯特拉算法. 先来看看基本概念: 用代码C语言实现如下: #include<string.h>#include< ...
- 【图】最短路径--迪杰斯特拉(Dijkdtra)算法
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 算法思想 每次找到离源 ...
- 别说了,世界那么大我想去看看!(最短路径-迪杰斯特拉算法弗洛伊德算法)
前言: 一直想去外面的世界看看,中国城市那么多,那么美,怎么样才可以用最少的钱,最短的时间游遍我想去的城市呢?(我在做梦?不不不!迪杰斯特拉算法和弗洛伊德算法来了) 这两个算法有着广泛的用途 ...
- 最短路径迪杰斯特拉算法--邻接矩阵
一.算法介绍 迪杰斯特拉算法(解决单源最短路径) 基本思想:每次找到离源点(如1号节点)最近的一个顶点,然后以该顶点为中心进行扩展,最终得到源点到其余所有点的最短路径. 基本步骤:1,设置标记数组bo ...
最新文章
- SAP QM 内向交货单在完成包装之后就自动触发了检验批?
- HTML5实例教程:OL标签的start属性和reversed属性
- Maven resource标签
- 用原生js封装get方法
- python读取数据库导出文件_python如何导出excel表格数据库数据
- 如何查看电脑是几核几线程
- LoadDruidSegmentStep failed SQLException: Cannot load JDBC driver class ‘com.mysql.jdbc.Driver‘
- puppet的配置清单书写
- 【转载】DEDE与DISCUZ整合积分同步[会员表,积分表
- POJ 3368 Frequent values
- freesurfer recon-all命令
- rpi4 实现 qiuqiu - Ultralight-SimplePose
- selenium 鼠标悬停事件
- Python-Level1-day16:异常处理try-exceptraise语句,for迭代原理,深入手写创建迭代器;yield浅出使用生成器
- Click Once使用总结
- 9.什么是向上转型?什么是向下转型?
- Spring MVC源码 ----- @RequestBody和@ResponseBody原理解析
- [k8s]一步一步学习k8syaml
- umix6适配鸿蒙系统吗,深度剖析测评优学派u36和umix6区别如何?哪个好?详细剖析测评...
- MybatisPlus_${ew.sqlSelect},${ew.sqlSet},${ew.sqlSegment},${ew.customSqlSegment}的使用
热门文章
- LeetCode_树类
- 正则(身份证,手机号,邮箱,正整数)
- springboot工程中使用spring.version导致无法启动
- 揭秘各国总统们钟爱的手机
- 8-th Android开发之服务器端
- LINQ系列:LINQ to SQL Join连接
- 25 个超棒的 WordPress 主题(2012)
- 想知道大家毕业后的发展道路
- 网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
- 重庆大学光电工程学院 贾旭滨 对 “句柄” “指针” 有下面的描述(AfxGetMainWnd GetSafeHwnd() AfxGetAppName() AfxGetThread)...