对于稠密图,采用邻接矩阵较为合适

所以我们先构建一个邻接矩阵

typedef int Vertex;
typedef int WeightType; //图
typedef struct MyGraph
{
int v, e;
WeightType G[MaxVertexNum][MaxVertexNum];
}MyGraph; //顶点信息, 可以不定义
typedef struct NodeType
{
Vertex id;
// Data data; 当节点有需要添加的信息时使用 }NodeType;

接下来我们使用Dijkstrs算法

void Dijkstra(int dist[], Vertex path[], MyGraph& g, Vertex id)
{
//是否被收入的集合
int collection[g.v];
memset(collection, , sizeof(collection));
dist[id] = ;
int mmin = INF;
while()
{
int v = -;
mmin = INF;
//稠密图用循环选出还没加入的节点的暂时的最短路的最小值
for(int i = ; i < g.v; i++)
if(mmin > dist[i] && collection[i] != )
{
mmin = dist[i];
v = i;
}
//如果都加入了, 那么退出
if(v == -)
break;
//将选出的节点收入
collection[v] = ;
//修改因为收入节点而受影响的节点的最短路
for(int j = ; j < g.v; j++)
{
//如果使得原来的节点变得更短, 则更新最短距离并且更新最短路
//这里collection[j]要没有被收入才计算,
//因为如果j被收入,那么dist[v]应当更小,那么v应当在j之前被收入, 相互矛盾
if(collection[j] == && dist[j] > dist[v] + g.G[v][j])
{
dist[j] = dist[v] + g.G[v][j];
path[j] = v;
}
} }
}

新手,欢迎大家找错误,提建议

带权单源最短路发[稠密图](Dijkstra)的更多相关文章

  1. 带权单源最短路[稀疏图](Dijkstra)

    因为是稀疏图,所以应当选择邻接表来存储 构造一个邻接表 这只是我的构造方法,有很多种更好的构造方法,大家可以自己去构造 typedef int vertex; typedef int WeightTy ...

  2. 洛谷 P5837 [USACO19DEC]Milk Pumping G (单源最短路,dijkstra)

    题意:有一\(n\)个点,\(m\)条边的双向图,每条边都有花费和流量,求从\(1\)~\(n\)的路径中,求\(max\frac{min(f)}{\sum c}\). 题解:对于c,一定是单源最短路 ...

  3. 【算法系列学习】Dijkstra单源最短路 [kuangbin带你飞]专题四 最短路练习 A - Til the Cows Come Home

    https://vjudge.net/contest/66569#problem/A http://blog.csdn.net/wangjian8006/article/details/7871889 ...

  4. [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  5. 模板C++ 03图论算法 1最短路之单源最短路(SPFA)

    3.1最短路之单源最短路(SPFA) 松弛:常听人说松弛,一直不懂,后来明白其实就是更新某点到源点最短距离. 邻接表:表示与一个点联通的所有路. 如果从一个点沿着某条路径出发,又回到了自己,而且所经过 ...

  6. 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)

    关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...

  7. 单源最短路_SPFA_C++

    当我们需要求一个点到其它所有点的最短路时,我们可以采用SPFA算法 代码特别好写,而且可以有环,但是不能有负权环,时间复杂度是O(α(n)n),n为边数,α(n)为n的反阿克曼函数,一般小于等于4 模 ...

  8. 【UVA1416】(LA4080) Warfare And Logistics (单源最短路)

    题目: Sample Input4 6 10001 3 21 4 42 1 32 3 33 4 14 2 2Sample Output28 38 题意: 给出n个节点m条无向边的图,每条边权都为正.令 ...

  9. 2018/1/28 每日一学 单源最短路的SPFA算法以及其他三大最短路算法比较总结

    刚刚AC的pj普及组第四题就是一种单源最短路. 我们知道当一个图存在负权边时像Dijkstra等算法便无法实现: 而Bellman-Ford算法的复杂度又过高O(V*E),SPFA算法便派上用场了. ...

随机推荐

  1. PHP生成HTML静态页面。

    function Generate(){ $html = '<!DOCTYPE html><html lang="en"><head> < ...

  2. 3Linux常用命令

    文件目录管理命令 1.touch touch 文件名   #创建空白文件 -a  修改读取(访问)时间atime -m  修改修改时间mtime -d  同时修改atime 和 mtime touch ...

  3. mysql 索引type介绍

    以下全部详细解析explain各个属性含义: 各属性含义:    id: 查询的序列号    select_type: 查询的类型,主要是区别普通查询和联合查询.子查询之类的复杂查询 SIMPLE:查 ...

  4. ELK-WEB中文汉化和安全认证

    1.Kibana汉化方法此项目,适用于Kibana 5.x-6.x的任意版本,汉化过程不可逆 1)Github仓库下载kibana中文汉化包,下载指令如下: git clone https://git ...

  5. Spark 基础之SQL 快速上手

    知识点 SQL 基本概念 SQL Context 的生成和使用 1.6 版本新API:Datasets 常用 Spark SQL 数学和统计函数 SQL 语句 Spark DataFrame 文件保存 ...

  6. 云笔记项目-笔记列表弹出"分享移动删除"子菜单

    业务需求: 笔记列表里还有一个按钮可以弹出子菜单,要求做到以下几点: (1)点击选中的笔记行的弹出按钮后,弹出子菜单,再次点击,子菜单收回. (2)选中其他笔记后,子菜单消失.效果如下图所示: 业务分 ...

  7. cdnbest区域自定义配置里添加防xss攻击配置

    把下面代码复制进去即可: <!--#start 300 --><config> <response action='allow' > <table name= ...

  8. django + nginx + uwsgi

    server{ listen ; server_name 0.0.0.0; charset utf-; access_log /var/log/nginx/access.log main; locat ...

  9. android 字体加粗

    参考 https://blog.csdn.net/to_cm/article/details/6002812 TextView tv = (TextView)findViewById(R.id.Tex ...

  10. 十三 re模块

    一:什么是正则? 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则.(在Python中)它内嵌在Python中,并通过 r ...