目录

Dijkstra

Dijkstra模板

eg:

Floyd

Floyd模板

eg1:

eg2:删点游戏

笔记:


Dijkstra

n<m时未优化算法更快(n*n+m)<  ((n+m)log n))

Dijkstra模板

#include<bits/stdc++.h>
using namespace std;
const int N = 1e7;
struct Node {int y, v;Node(int _y, int _v) { y = _y, v = _v; }
};
vector<Node>edge[N + 1];
int n, m, dist[N + 1];
bool b[N + 1];
int Dijkstra(int s, int t) {memset(b, 0, sizeof(b));memset(dist, 127, sizeof(dist));dist[s] = 0;while (1) {int x = -1;for (int i = 1; i <= n; i++) {if (!b[i] && dist[i] < 1 << 30)if (x == -1 || dist[i] < dist[x])x = i;}if (x == t || x == -1)break;//找不到点加入集合C 结束b[x] = 1;for (auto i : edge[x])dist[i.y] = min(dist[i.y], dist[x] + i.v);}return dist[t];
}
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7;
struct Node {int y, v;Node(int _y, int _v) { y = _y, v = _v; }
};
set<pair<int, int>>q;
vector<Node>edge[N + 1];
int n, m, dist[N + 1];int Dijkstra(int s, int t) {memset(dist, 127, sizeof(dist));dist[s] = 0; q.clear();for (int i = 1; i <= n; i++)q.insert(make_pair(dist[i], i));while (!q.empty()) {int x = q.begin()->second;q.erase(q.begin());if (x == t || dist[x] > 1 << 30)break;//找不到点加入集合C 结束for (auto i : edge[x]) {//松弛操作更新if (dist[x] + i.v < dist[i.y]) {q.erase(make_pair(dist[i.y], i.y));dist[i.y] = dist[x] + i.v;q.insert(make_pair(dist[i.y], i.y));}}//dist[i.y] = min(dist[i.y], dist[x] + i.v);}return dist[t];
}

eg:

给你一张简单有向图,边权都为非负整数。以及一些询问,询问两个点之间的距离。

图用以下形式给出:

第一行输入三个整数 n,m,k,表示图的顶点数、边数和询问次数,顶点编号从 1到 

最短路Dijkstra+Floyd相关推荐

  1. 最短路[Dijkstra和堆优化的Dijkstra][Bellman-Ford和SPFA][Floyd最短路](更新中)

    文章目录 第一类:单源最短路 一 所有边权都是正数(Dijkstra) 朴素版Dijkstra(稠密图) 堆优化版Dijkstra(稀疏图) 二 存在负权边(BF和SPFA) 第二类:多源汇最短路(F ...

  2. 最短路问题(Bellman/Dijkstra/Floyd)

    最短路问题(Bellman/Dijkstra/Floyd) 寒假了,继续学习停滞了许久的算法.接着从图论开始看起,之前觉得超级难的最短路问题,经过两天的苦读,终于算是有所收获.把自己的理解记录下来,可 ...

  3. 最短路径-dijkstra/floyd

    目录 floyd -dijkstra floyd floyd:用来求所有顶点之间的最短路径问题,求最短路径具体节点顺序,求各点之间最短路径长度 理解floyd: 二维矩阵图,就是不断通过测试新的节点k ...

  4. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  5. 单源最短路 Dijkstra算法 和 SPFA算法

    单源最短路 •从一个点出发,到达其他顶点的最短路径的长度. •基本操作:松弛 •d[u]+map[u, v]< d[v]这样的边(u,v)称为紧的(tense),可以对它进行松弛(relax): ...

  6. 最短路 dijkstra模板

    最短路 dijkstra模板 #pragma warning(disable:4996) #include<iostream> #include<string> #includ ...

  7. HDOJ 2112 HDU Today (最短路 Dijkstra SPFA)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. Til the Cows Come Home(最短路-Dijkstra)

    Til the Cows Come Home(最短路-Dijkstra) judge:https://vjudge.net/contest/297882#problem/A Time limit:10 ...

  9. 最短路模板 - Floyd / Dijkstra

    Floyd算法: 写得很好的博客:最短路径问题---Floyd算法详解 算法的特点: 弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理有向图或无向图或负权(但不可存在负权回路)的最短路径 ...

最新文章

  1. 直接插入排序、希尔排序
  2. leetcode- nim game
  3. mysql8.0.17压缩包安装教程_超详细的MySQL8.0.17版本安装教程
  4. 关于Android ViewPager 与 Fragment 一起使用碰到的问题
  5. python基础(part3)--运算符
  6. python 运算符重载_Python3面向对象-运算符重载
  7. linux退出lftp命令,lftp命令使用
  8. [js] js怎样避免原型链上的对象共享?
  9. android使用 注解框架,Android实践 | 注解框架ButterKnife基本使用
  10. 三种平摊分析的方法分别为_干货|电工必须学会的三极管电路分析方法
  11. mysql to data_mysql str_to_date 字符串转换为日期
  12. pythonunicode和str_Python中的str与unicode处理方法
  13. 验证邮箱是否合法php,验证邮箱是否合法
  14. mysql+存储过程+模式,Mysql(7)---存储过程
  15. 获取代理电脑的https证书方法
  16. 数学篇--初中数学知识
  17. 谷歌学术镜像mark
  18. 经典算法大全之费式数列
  19. 关于 red bend
  20. MacQQ上接收的文件都放在哪?

热门文章

  1. 云服务器安装宝塔面板建网站全过程(图文教程)
  2. CSS高级篇——渐变 (gradient)
  3. NBA球员出手位置分布图
  4. SAS学习——系统选项
  5. JS中出现三个点(...)的作用是什么
  6. iPhone 手机存储空间没有了
  7. 声音大小与振幅的关系_物理知识问答-响度与振幅的关系是什么?
  8. 怎么能避免浏览器请求超时_浏览器所允许的http请求最长的响应时间?
  9. 【C++】endl的作用
  10. 一辆智能小车,最初(时间为0)的位置为(0,0),我们想知道它最后的位置。小车以每小时10公里的速度向北移动(以北为y轴正向,以东为x轴正向)。小车会受到一系列依照时间戳记排序的命令,1表示“向左转”