各类最短路算法基本模板-C++
原文转自:https://blog.csdn.net/changjiale110/article/details/77394650
感谢。
#define Max 0x3f3f3f3f
#define maxn 10010
int n,m;
int Map[maxn][maxn];
int dist[maxn];
int vist[maxn];
Floyd:
void floyd()
{
int i,j,k;
for (k=1; k<=n; k++)
{
for(i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
Map[i][j]=min( Map[i][j],Map[i][k]+Map[k][j] );
}
}
}
}
Dijkstra:
void Dijkstra(int s)
{
int i,j;
int u;
int Min;
for (i=1; i<=n; i++)
{
vist[i]=0;
dist[i] = Map[s][i];
}
vist[s] = 1;
for (i=1; i<=n; i++)
{
Min=Max;
u = -1;
for (j=1; j<=n; j++)
{
if (vist[j]==0&&dist[j]<Min)
{
u = j;
Min = dist[j];
}
}
if (u==-1)
break;
vist[u] = 1;
for (j=1; j<=n; j++)
{
if(vist[j]==0)
{
if(dist[u]+Map[u][j]<dist[j])
dist[j] = dist[u]+Map[u][j];
}
}
}
}
SPFA:
void spfa(int s)
{
int i,now;
for( i=1;i<=n;i++ )
{
dist[i]=Max;
vist[i] = 0;
}
dist[s] = 0;
queue<int>q;
q.push(s);
vist[s] = 1;
while (!q.empty())
{
now = q.front();
q.pop();
vist[now] = 0;
for( i=1;i<=n;i++)
{
if (dist[i]>dist[now]+Map[now][i])
{
dist[i] = dist[now]+Map[now][i];
if (vist[i] == 0)
{
q.push(i);
vist[i] = 1;
}
}
}
}
}
各类最短路算法基本模板-C++的更多相关文章
- 最短路算法 -- SPFA模板
一.算法步骤 建立一个队列,初始时队列里只有起始点,再建立一个数组记录起始点到所有点的最短路径(该数组的初始值要赋为极大值,该点到它本身的路径赋为0,下面的模板中该数组为dist[]).然后执行松弛操 ...
- [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- 最短路算法(floyed+Dijkstra+bellman-ford+SPFA)
最短路算法简单模板 一.floyed算法 首先对于floyed算法来说就是最短路径的动态规划解法,时间复杂度为O(n^3) 适用于图中所有点与点之间的最短路径的算法,一般适用于点n较小的情况. Flo ...
- (转)最短路算法--Dijkstra算法
转自:http://blog.51cto.com/ahalei/1387799 上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短 ...
- 沈阳网络赛D-Made In Heaven【k短路】【模板】
One day in the jail, F·F invites Jolyne Kujo (JOJO in brief) to play tennis with her. However, Pucci ...
- 对于dijkstra最短路算法的复习
好久没有看图论了,就从最短路算法开始了. dijkstra算法的本质是贪心.只适用于不含负权的图中.因为出现负权的话,贪心会出错. 一般来说,我们用堆(优先队列)来优化,将它O(n2)的复杂度优化为O ...
- Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)
上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为"多源最短路".本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做&q ...
- Dijkstra最短路算法
Dijkstra最短路算法 --转自啊哈磊[坐在马桶上看算法]算法7:Dijkstra最短路算法 上节我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最 ...
- Floyd最短路算法
Floyd最短路算法 ----转自啊哈磊[坐在马桶上看算法]算法6:只有五行的Floyd最短路算法 暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计 ...
随机推荐
- 网络文件系统nfs文件系统使用(比较全面)
一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ...
- vim文本编辑器的基本使用方法
前言 命令模式与编辑模式 内置命令 参考资料注明 前言 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫vim,它是vi的增强版(vi Impro ...
- 为什么不用C++写游戏(聪明的程序员不用C++折磨自己)(这些工作,QT都替开发者解决了,C++没有根类导致太多的问题,也没有字符串类)
当今世界上绝大多数游戏都是C++写的,为什么要说不呢? 要做什么?写游戏. 写游戏首先要考虑些什么?做什么样的游戏,图形.音效.游戏逻辑如何实现. 用C++要先考虑什么?定义跨平台数据类型抽象,实现常 ...
- 浅析 C++ 调用 Python 模块
浅析 C++ 调用 Python 模块 作为一种胶水语言,Python 能够很容易地调用 C . C++ 等语言,也能够通过其他语言调用 Python 的模块. Python 提供了 C++ 库,使得 ...
- GTest翻译词汇表
版本号:v_0.1 词汇表 Assertion: 断言. Bug: 不翻译. Caveat: 警告. Error bound: 误差范围. Exception: 异常. Flag: 标志位. Floa ...
- 介绍两种Timer定时器的使用
第一种, 直接实例化Timer类,设置时间间隔,到达时间后执行想要执行的事件.代码示例: using System; using System.Collections.Generic; using S ...
- Spring之bean后处理器
Bean后处理器是一种特殊的Bean,容器中所有的Bean在初始化时,均会自动执行该类的两个方法.由于该Bean是由其它Bean自动调用执行,不是程序员手工调用,故此Bean无须id属性.需要做的是, ...
- java集合框架collection(5)HashMap和TreeMap
上图转载自:http://www.cnblogs.com/vamei/archive/2013/04/15/3000913.html 一.区别和联系 1.迭代器 迭代器是一种设计模式,它是一个对象,它 ...
- HTML连载16-颜色控制属性2&标签选择器
一.颜色控制属性(上接连载15) (4)十六进制 在前端开发中通过十六进制来表示颜色,其实本质就是RGB,十六进制中是通过每两位表示一个颜色. 例如:#FFEE00,其中FF代表的是R,EE代表的G, ...
- 10 table标签
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...