当前位置: 首页 > news >正文

数据结构(算法)-图(最短距离Dijkstra)

为什么80%的码农都做不了架构师?>>>   hot3.png


#include <iostream>
using namespace std;

//最多的顶点数
#define MaxNode 30
#define MaxCost 1000 //没有边无穷大

int cost[MaxNode][MaxCost] ; //带权邻接矩阵
int dist[MaxNode] ; //顶点间的最短距离
int n =6;

void shortdjs(int v0){
	int s[MaxNode]; //顶点距离
	int mindis , dis , i,j,u;
	for(i=1; i<= n ; i++){
		dist[i]=cost[v0][i];//将2顶点的距离放入dist并将s初始化为0
		s[i]=0;

	}
	s[v0]=1;
	for(i=1; i<=n ; i++){
		mindis=MaxCost;
		for(j=1; j<=n ; j++){
			if(s[j]==0 && dist[j]<mindis){//查找到权值最小的并记录顶点u
				u=j;
				mindis=dist[j];
			}
		}
	}
	
	s[u]=1;
	for(j=1 ; j <= n ;j++){
		if(s[j]==0){//剩下的没有确定的权值的顶点
			dis=dist[u] + cost[u][j];
			dist[j]=(dist[j]<dis ) ? dist[j] : dis;//计算并确定最小的权值
		}
	}
	
}

void dispath(int v0){
	int i;
	printf("\n顶点%d到顶点的最短路径长度:\n",v0);
	for(i=1;i<= n ; i++){
		printf("(V%d->V%d)",v0,i);
		if(dist[i] == MaxCost){
			printf("无路径\n");
		}else{
			printf("%d\n",dist[i]);
		}
	}


}

void main(){
	int i,j,v0=2;
	for(i=1; i<=n ; i++){
		for(j=1; j<=n ;j++){
			cost[i][j]=MaxCost;//初始化数据为1000
		}
	}
	for(i=1; i <= n ;i++)
		cost[i][i]=0;          //自己到自己依次初始化为0
	cost[1][2]=50;cost[1][3]=10;
	cost[1][5]=45;cost[2][3]=15;
	cost[2][4]=50;cost[2][5]=10;
	cost[3][1]=20;cost[3][4]=15;
	cost[4][1]=20;cost[4][5]=35;
	cost[5][4]=30;cost[6][4]=3;//初始化顶点的权值
	shortdjs(v0);
	dispath(v0);
}

 

测试结果:

顶点2到顶点的最短路径长度:
(V2->V1)无路径
(V2->V2)0
(V2->V3)15
(V2->V4)40
(V2->V5)10
(V2->V6)无路径

 

 

转载于:https://my.oschina.net/saulc/blog/2396053

相关文章:

  • Jessica Kerr:高绩效团队简史
  • Windows操作系统查看电脑开关机记录
  • 实现图元及属性的算法---椭圆生成算法
  • 大快搜索数据爬虫技术实例安装教学篇
  • 解决项目不编译4大clean
  • 迭代器 /生成器 yield
  • mysql表与表之间的关系
  • 对标汽车之家,新势力杉车网的另类崛起
  • RabbitMq集群搭建
  • vue-cli2使用cdn方式引入cytoscape
  • VS2015 提示 无法启动 IIS Express Web 服务器
  • P5003 跳舞的线 - 乱拐弯
  • 阿里数据库十年变迁,那些你不知道的二三事
  • RTSP(Real Time Streaming Protocol)实时流传输协议详解
  • 《三块广告牌》
  • 【css3】浏览器内核及其兼容性
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2019.2.20 c++ 知识梳理
  • C++入门教程(10):for 语句
  • CAP 一致性协议及应用解析
  • Date型的使用
  • export和import的用法总结
  • Mysql5.6主从复制
  • storm drpc实例
  • WebSocket使用
  • win10下安装mysql5.7
  • 测试开发系类之接口自动化测试
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 记录一下第一次使用npm
  • 理解在java “”i=i++;”所发生的事情
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信公众号开发小记——5.python微信红包
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • ​2020 年大前端技术趋势解读
  • ​低代码平台的核心价值与优势
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (差分)胡桃爱原石
  • (超详细)语音信号处理之特征提取
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (正则)提取页面里的img标签
  • (转)Linux整合apache和tomcat构建Web服务器
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • **CI中自动类加载的用法总结
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET6 命令行启动及发布单个Exe文件
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)