最短路---dijsktra--邻接矩阵
const int MAXINT = ;
const int MAXNUM = ; //点的个数
int dist[MAXNUM];
int prev[MAXNUM]; int A[MAXUNM][MAXNUM]; void Dijkstra(int v0)
{
bool S[MAXNUM]; // 新建一个标记数组,判断是否已存入该点到S集合中;
int n=MAXNUM;
for(int i=; i<=n; ++i)
{
dist[i] = A[v0][i]; //将该点的邻接矩阵复制到dist[]一维数组中;
S[i] = false; // 初始都未用过该点;
if(dist[i] == MAXINT)
prev[i] = -;
else
prev[i] = v0; //记录该点的上一节点是现在处理的源点,如果不联通为-1;
}
dist[v0] = ; //dist表示原点v0到该点的最短距离;
S[v0] = true; //将源点标记为已经访问;
for(int i=; i<=n; i++) //循环n-1次,保证找到每一个点;
{
int mindist = MAXINT; //标记当前的最小距离,初始化为最大;
int u = v0; // 找出当前未使用的点j的dist[j]最小值
for(int j=; j<=n; ++j)
if((!S[j]) && dist[j]<mindist)
{
u = j; // u保存当前邻接点中距离最小的点的号码
mindist = dist[j];
} //找出了距离该源点最近的那个点,u记录了点的编号;
S[u] = true;
for(int j=; j<=n; j++)
if((!S[j]) && A[u][j]<MAXINT) //找没有被使用过的点,且与u是联通的点;
{
if(dist[u] + A[u][j] < dist[j]) //在通过新加入的u点路径找到离v0点更短的路径 ;(如果该点距离原点的距离比从u点过度过来的距离长,则当前的最短路就改变)
{
dist[j] = dist[u] + A[u][j]; //更新dist
prev[j] = u; //记录前驱顶点
}
}
}
}
最短路---dijsktra--邻接矩阵的更多相关文章
- Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相 ...
- HDU 2544 最短路(dijkstra+邻接矩阵)
( ̄▽ ̄)" #include<iostream> #include<cstdio> using namespace std; const int INF=10e7; ...
- 各种模板(part 2)
堆: using namespace dui //堆 { #include<queue> //需要的库 priority_queue < int > Q; //定义一个Q的大根 ...
- 【Luogu】P2498拯救小云公主(spfa)
题目链接 我水爆了- - 容易发现可以把两个圆之间连边,左上为起点右下为终点,最小生成树直到起点跟终点连起来,输出边权/2就行. 然后80. 并不理解为什么这可以转化成spfa求最短路,邻接矩阵暴力跑 ...
- bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑【矩阵乘法+Floyd】
唔不知道怎么说--大概核心是把矩阵快速幂的乘法部分变成了Floyd一样的东西,非常之神 首先把点离散一下,最多有200个,然后建立邻接矩阵,a[u][v]为(u,v)之间的距离,没路就是inf 然后注 ...
- 【BZOJ2459】 [BeiJing2011]神秘好人
Description 有一个神秘好人跟Bdcxq玩一个游戏,如果Bdcxq成功完成了这个游戏,那么他将会得到一件礼物. 这个游戏是这样的: 有一个梯子形的图如下,每条边都有一个权值. 神秘好人一开始 ...
- USACO07NOV Cow Relays G 题解
题目 For their physical fitness program, \(N (2 ≤ N ≤ 1,000,000)\) cows have decided to run a relay ra ...
- 最短路径(dijkstra 与 Floyd)
目录 1. 如何建图? 2. Floyd 3. Dijkstra 1. 如何建图? 要跑最短路,首先要有图 --鲁迅 常用的存储方法有两种,分别是邻接矩阵(用二维数组表示边)和邻接表(模拟链表表示边) ...
- POJ-图论-最短路模板(邻接矩阵)
POJ-图论-最短路模板 一.Floyd算法 刚读入数据时,G为读入的图邻接矩阵,更新后,G[i][j]表示结点i到结点j的最短路径长度 int G[N][N];//二维数组,其初始值即为该图的邻接矩 ...
- AcWing 849. Dijkstra求最短路 I 朴素 邻接矩阵 稠密图
//朴素Dijkstra 边权都是正数 稠密图:点和边差的比较多 #include<cstring> #include<iostream> #include<algori ...
随机推荐
- 爬去豆瓣图书top250数据存储到csv中
from lxml import etree import requests import csv fp=open('C://Users/Administrator/Desktop/lianxi/do ...
- UI的组织形式
UI的组织形式是树状结构: 根据层次的不同分为叶子节点和干节点. 叶子节点负责简单的信息展示. 复杂的主干复杂叶子节点的组织和整体展示. http://www.cnblogs.com/feng9exe ...
- 阻止form元素内的input标签回车提交表单
<form></form>标签内input元素回车会默认提交表单. 阻止回车默认提交表单: $('form').on('keydown', function (event) { ...
- Django 从0开始创建一个项目
title: Django 从0开始创建一个项目 tags: Django --- Django 从0开始创建一个项目 创建Django工程及配置 创建工程:django-admin starproj ...
- RestSharp使用备忘
(1)一般调用: public static List<T> Execute<T>(string resourceUrl, object obj, out int totalN ...
- linux之切换用户su(switch user)
1.切换至root su 或 su root然后输入密码 这种只切换身份,不切换home工作目录 su - 或 su - root然后输入密码 这种不仅切换身份,而且切换home工作目录 2.切换至普 ...
- 第四次作业:Windows各种基本应用的命令处理方法
删除文件夹命令? rd (remove directory) 如何给文件夹重新命名? ren (rename) 如何在文件夹中建立文件夹? md swift\a 如何用命令查看文本文件的内容? typ ...
- bash编程之case语句,函数
bash脚本编程:之case语句 条件测试: 0: 成功 1-255: 失败 命令: [ expression ] [[ expression ]] test expression exP ...
- ubuntu下RedisDesktopManager的安装,redis可视化工具
官方网站:https://redisdesktop.com/download 一句命令行解决: sudo snap install redis-desktop-manager 或者直接通过软件管理中心 ...
- 【php】函数重载问题
PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数.