#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 求单源最短路径相关推荐

  1. 图的最短路径之Dijkstra求单源最短路径算法(C++)

    一个有向带权图求它的单源最短路径可以使用Dijkstra算法. 单源最短路径是指:从图中的某个顶点出发,到其余各个顶点权值最小的路径. Dijkstra算法需要用到三个辅助数组: dist[max]: ...

  2. C语言基本数据结构之三(图的广度及深度遍历,求单源最短路径的Dijkstra算法)

    上一篇主要讲了二叉树的先序,中序,后序遍历算法以及深度和节点的算法,这篇就讲一讲图的基本算法. 一.图的基本概念 1.1有向图G1: 有向图G是由两个集合V(G)和E(G)组成的,其中:V(G)是顶点 ...

  3. Dijkstra算法求单源最短路径

    1.最短路径 在一个连通图中,从一个顶点到另一个顶点间可能存在多条路径,而每条路径的边数并不一定相同.如果是一个带权图,那么路径长度为路径上各边的权值的总和.两个顶点间路径长度最短的那条路径称为两个顶 ...

  4. Dijkstra(迪杰斯特拉)算法求单源最短路径问题

    Dijkstra(迪杰斯特拉)算法求单源最短路径问题 重要的事情说三遍:代码不是我写的!代码不是我写的!代码不是我写的! 第一个算法是严蔚敏数据结构(C语言版)上写的,第二个算法是王道数据结构上写的, ...

  5. 最短路径:Dijkstra算法(求单源最短路径)Floyd算法(求各顶点之间最短路径)

    最短路径: 在一个带权图中,顶点V0到图中任意一个顶点Vi的一条路径所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径最短的那条路径称为最短路径. DiskStra算法: 求单源最短路径,即 ...

  6. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

  7. 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)

    1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...

  8. Spark组件之GraphX学习9--使用pregel函数求单源最短路径

    http://www.voidcn.com/blog/xubo245/article/p-5930144.html 1解释 使用pregel函数求单源最短路径 GraphX中的单源点最短路径例子,使用 ...

  9. matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化

    function [minD,path] = BellmanFord(w,start,terminal) %求单源最短路径的Bellman-Ford算法(图论) %调用格式:[minD,path] = ...

最新文章

  1. 免校准的电量计量芯片_万物互联,开启智慧计量新时代—2020年中国物联网计量创新发展论坛在济南举办...
  2. 博弈论题表(好少~~~)
  3. python3下载文件-python 3.3 下载固定链接文件并保存的方法
  4. 钉钉关键字回复功能_在家办公首日:钉钉、企业微信集体“崩溃”,只能选择 QQ、微信...
  5. 绕过图片防盗链的方法
  6. 诺基亚成功转型:引领新一代5G技术 布局物联网
  7. 工作基本功:问题解决不了或不满意,不要重复,应该向上级反映或投诉
  8. 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
  9. 积分简明笔记-第二类曲线积分的类型
  10. 记账用哪个软件比较好?
  11. 晋南讲堂之持久层框架ORM简介
  12. Google Play商店的各种报错解释以及修复方法。
  13. Web前端——什么是web前端,什么是HTML及其常用标签
  14. JAVA生成订单编号工具类
  15. 网络安全现状与未来蓝图||建立高效的网络安全体系
  16. 识别人脸伪装 仅看眼睛和嘴巴就能识别一半
  17. 人工智能时代,你的数学基础够用吗?
  18. aida64怎么测试cpu稳定性_如何使用aida64查看cpu稳定
  19. uniapp vue 实现模仿微信支付密码弹窗
  20. CTF-MISC-乌镇峰会种图-WP

热门文章

  1. 玩转南海之滨 广东自助游线路全攻略
  2. 如何在自定义的数据集上训练YOLOv5
  3. 中国移动网关协议文档
  4. python100个常用术语_盘点Python中的常用术语
  5. 自己动手修复PADS Layout 9.5封装向导窗口显示不全的Bug
  6. 类与对象(中) 构造函数和析构函数
  7. Nginx截断uwsgi+Django(Flask)大响应体的问题及解决
  8. 2022-1-13牛客网C++项目—— 第二章 Linux 多进程开发(一)
  9. leetcode系列--234.回文链表
  10. error C4703: 使用了可能未初始化的本地指针变量xxx