Dijkstra 求单源最短路径
#include "stdafx.h"
#include <iostream>
using namespace std ;#include <vector>
#include <limits>static int maxInt=numeric_limits<int>::max();//Dijkstra 单源最短路径
struct Graph_9
{int vexnum,arcnum;vector<vector<int> > arcs; //邻接矩阵Graph_9(int ,int);void printShortestPath();~Graph_9(){for(int i=0;i<vexnum;++i) arcs[i].clear(); arcs.clear();}
};Graph_9::Graph_9(int _vexnum,int _arcnum):vexnum(_vexnum),arcnum(_arcnum)
{//初始化邻接矩阵vector<int> arc(vexnum,maxInt);for(int i=0;i<vexnum;++i)arcs.push_back(arc);//构造邻接矩阵int v,w,base=1;for(int i=0;i<arcnum;++i){cin>>v>>w;arcs[v][w]=base;base*=2;}
}void Graph_9::printShortestPath()
{//辅助数组D[i]表示0到i点的最短路径vector<int> D(vexnum,maxInt);//初始化Dfor(int i=1;i<vexnum;++i)D[i]=arcs[0][i];//标志数组F[i]表示是否找到0到i点的最短路径vector<int> F(vexnum,0);//遍历顶点int min,minIndex;for(int i=1;i<vexnum;++i){min=maxInt;for(int j=1;j<vexnum;++j){if(!F[j]){if(D[j]<min){min=D[j];minIndex=j;}}}F[minIndex]=1;for(int k=1;k<vexnum;++k){if(!F[k]&&(min+arcs[minIndex][k]<D[k])){D[k]=min+arcs[minIndex][k];}}}for(int i=1;i<vexnum;++i){if(D[i]==maxInt)cout<<-1<<endl;elsecout<<D[i]<<endl;}
}int main()
{int vexnum,arcnum;while(cin>>vexnum>>arcnum){Graph_9* mGraph=new Graph_9(vexnum,arcnum);mGraph->printShortestPath();delete mGraph;}return 0;
}
Dijkstra 求单源最短路径相关推荐
- 图的最短路径之Dijkstra求单源最短路径算法(C++)
一个有向带权图求它的单源最短路径可以使用Dijkstra算法. 单源最短路径是指:从图中的某个顶点出发,到其余各个顶点权值最小的路径. Dijkstra算法需要用到三个辅助数组: dist[max]: ...
- C语言基本数据结构之三(图的广度及深度遍历,求单源最短路径的Dijkstra算法)
上一篇主要讲了二叉树的先序,中序,后序遍历算法以及深度和节点的算法,这篇就讲一讲图的基本算法. 一.图的基本概念 1.1有向图G1: 有向图G是由两个集合V(G)和E(G)组成的,其中:V(G)是顶点 ...
- Dijkstra算法求单源最短路径
1.最短路径 在一个连通图中,从一个顶点到另一个顶点间可能存在多条路径,而每条路径的边数并不一定相同.如果是一个带权图,那么路径长度为路径上各边的权值的总和.两个顶点间路径长度最短的那条路径称为两个顶 ...
- Dijkstra(迪杰斯特拉)算法求单源最短路径问题
Dijkstra(迪杰斯特拉)算法求单源最短路径问题 重要的事情说三遍:代码不是我写的!代码不是我写的!代码不是我写的! 第一个算法是严蔚敏数据结构(C语言版)上写的,第二个算法是王道数据结构上写的, ...
- 最短路径:Dijkstra算法(求单源最短路径)Floyd算法(求各顶点之间最短路径)
最短路径: 在一个带权图中,顶点V0到图中任意一个顶点Vi的一条路径所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径最短的那条路径称为最短路径. DiskStra算法: 求单源最短路径,即 ...
- PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...
- 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...
- Spark组件之GraphX学习9--使用pregel函数求单源最短路径
http://www.voidcn.com/blog/xubo245/article/p-5930144.html 1解释 使用pregel函数求单源最短路径 GraphX中的单源点最短路径例子,使用 ...
- matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化
function [minD,path] = BellmanFord(w,start,terminal) %求单源最短路径的Bellman-Ford算法(图论) %调用格式:[minD,path] = ...
最新文章
- 免校准的电量计量芯片_万物互联,开启智慧计量新时代—2020年中国物联网计量创新发展论坛在济南举办...
- 博弈论题表(好少~~~)
- python3下载文件-python 3.3 下载固定链接文件并保存的方法
- 钉钉关键字回复功能_在家办公首日:钉钉、企业微信集体“崩溃”,只能选择 QQ、微信...
- 绕过图片防盗链的方法
- 诺基亚成功转型:引领新一代5G技术 布局物联网
- 工作基本功:问题解决不了或不满意,不要重复,应该向上级反映或投诉
- 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
- 积分简明笔记-第二类曲线积分的类型
- 记账用哪个软件比较好?
- 晋南讲堂之持久层框架ORM简介
- Google Play商店的各种报错解释以及修复方法。
- Web前端——什么是web前端,什么是HTML及其常用标签
- JAVA生成订单编号工具类
- 网络安全现状与未来蓝图||建立高效的网络安全体系
- 识别人脸伪装 仅看眼睛和嘴巴就能识别一半
- 人工智能时代,你的数学基础够用吗?
- aida64怎么测试cpu稳定性_如何使用aida64查看cpu稳定
- uniapp vue 实现模仿微信支付密码弹窗
- CTF-MISC-乌镇峰会种图-WP
热门文章
- 玩转南海之滨 广东自助游线路全攻略
- 如何在自定义的数据集上训练YOLOv5
- 中国移动网关协议文档
- python100个常用术语_盘点Python中的常用术语
- 自己动手修复PADS Layout 9.5封装向导窗口显示不全的Bug
- 类与对象(中) 构造函数和析构函数
- Nginx截断uwsgi+Django(Flask)大响应体的问题及解决
- 2022-1-13牛客网C++项目—— 第二章 Linux 多进程开发(一)
- leetcode系列--234.回文链表
- error C4703: 使用了可能未初始化的本地指针变量xxx