最短路
文章平均质量分 72
1
zzqwtc
blog dot zzqwtc dot com
展开
-
USACO - 牛的旅行(Floyd)
USACO - 牛的旅行 题意 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言,你能看到至少有两个牧区不连通。这样,农民John就有多个牧区了。 John想在农场里添加一条路径(注意,恰好一条)。对这条路径有以下限制: 一个牧场的直径就是牧场中最远的两个牧区的距离(本题中所提到的所有距离指的都是最短的距离)。考虑如下的有5个牧区的牧场,牧区用“*”表示,路径用直线表示。每一个牧区都有自己的坐标: 15,15 20原创 2021-10-16 21:52:13 · 3243 阅读 · 0 评论 -
spfa 判断负环
SPFA判断负环 基本过程与spfa求最短路相同,但是额外记录一个 cnt数组,表示到当前点的最短路经过的边的条数,如果cnt[i]>=n说明一定存在一个负环。 此外,初始化队列的时候,要将所有点都加入队列,因为1可能到不了负环存在的位置。 #include<bits/stdc++.h> #include<unordered_map> // #define int long long #define INF 0x3f3f3f3f #define INFL 0x3f3f3f3f3原创 2021-09-30 17:11:59 · 3414 阅读 · 0 评论 -
SPFA(队列优化的Bellman-Ford算法)
SPFA(Shortest path faster algorithm) 算法思想基于Bellman-Ford算法 进行优化的方式是 在进行某一次松弛操作中 如果起点到一个点的距离不变 那么以这个点为中转点能到达的点距起点的距离不变 如果这个点的距离发生了变化 就将这个点入队列 以求通过这个点中转的点距起点的位置是否发生了变化 vis数组标记当前位于队列中的顶点 显然 一个顶点出队列时 要取消标记...原创 2020-03-25 22:07:44 · 1713 阅读 · 0 评论 -
Bellman-Ford
Bellman-Ford算法用于求单源最短路包含负权边的问题,还可以检测图中是否有负环 #include<bits/stdc++.h> #define INF 0x3f3f3f3f #define mod 1000000007 #define IOS ios::sync_with_stdio(false) #define endl '\n' using namespace std; ...原创 2020-03-25 19:33:45 · 1663 阅读 · 0 评论 -
最短路之Dijkstra+堆优化(单源最短路)
优先队列实现对Dijkstra的优化 求单源最短路 #include<bits/stdc++.h> #define INF 0x3f3f3f3f #define mod 1000000007 #define IOS ios::sync_with_stdio(false) #define endl '\n' using namespace std; typedef long long ...原创 2020-03-14 21:22:19 · 1725 阅读 · 0 评论 -
最短路之Floyd算法
算法思路 判断是否可以通过中转点 k 使 i 到 j 的距离减小 如图 设i-j为100 i-k为40 k-j为40 显然通过k的中转 从i到j所耗费的路程变短了 #include<bits/stdc++.h> #define INF 0x3f3f3f3f #define mod 1000000007 #define IOS ios::sync_with_stdio(false) #...原创 2020-03-14 16:29:45 · 1701 阅读 · 0 评论 -
单源最短路的综合应用
Acwing 1135 新年好 重庆城里有 n 个车站,m 条 双向 公路连接其中的某些车站。 每两个车站最多用一条公路连接,从任何一个车站出发都可以经过一条或者多条公路到达其他车站,但不同的路径需要花费的时间可能不同。 在一条路径上花费的时间等于路径上所有公路需要的时间之和。 佳佳的家在车站 1,他有五个亲戚,分别住在车站 a,b,c,d,e 过年了,他需要从自己的家出发,拜访每个亲戚(顺序任意),给他们送去节日的祝福。 怎样走,才需要最少的时间? 输入格式 第一行:包含两个整数 n,m 分别表示车站数目原创 2021-01-13 21:54:18 · 2120 阅读 · 0 评论 -
单源最短路的建图方式
最短路算法及其时间复杂度 单源最短路 DijkstraDijkstraDijkstra O(n2)O(n^2)O(n2) 堆优化版的DijkstraDijkstraDijkstra O(mlogn)O(mlogn)O(mlogn) SPFASPFASPFA O(m)O(m)O(m) 最坏O(nm)O(nm)O(nm) 多源最短路 FloydFloydFloyd O(n3)O(n^3)O(n3) AcWing1129. 热浪 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错原创 2020-12-02 23:59:05 · 2028 阅读 · 0 评论 -
FloodFill和最短路
FloodFill AcWing1097. 池塘计数 农夫约翰有一片 N∗MN∗MN∗M 的矩形土地。 最近,由于降雨的原因,部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,则用”.”表示。 现在,约翰想知道他的土地中形成了多少片池塘。 每组相连的积水单元格集合可以看作是一片池塘。 每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。 请你输出共有多少片池塘,即矩阵中共有多少片相连的”W”块。 输入格式 第一行包含两原创 2020-10-23 23:40:44 · 1935 阅读 · 0 评论