http://47.95.147.191/problem/P3规定边数的最短路,跑floyd+矩阵快速幂 #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include< ...
分类:
Web程序 时间:
2020-02-26 19:10:33
阅读次数:
101
Dijkstra算法适用范围是单源最短路,有向图或者无向图,不能处理负权值 Floyd算法适用多源最短路,有向图或者无向图,可以处理负权值但是不能处理负权回路 Ford 算法多源最短路,可以处理负权值,能检测负权回路 Leetcode 743. 网络延迟时间 先用Dijkstra算法解,输入是vec ...
分类:
编程语言 时间:
2020-02-23 11:55:45
阅读次数:
90
求最短路暂时掌握了4种,但感觉就dijkstra复杂度能用; 1 floyd算法: 就是暴力的三重循环,以每个点为中转点,每次遍历所有的点,看看能不能通过这个中转点更新最短路径; 优点:n<200时用这种方法,用邻接矩阵存图 ,可求任意的两点的最短路;而且好写; 缺点:复杂度太高,O(n^3)的复杂 ...
分类:
编程语言 时间:
2020-02-22 10:16:39
阅读次数:
71
题目:传送门 题意: 给你 n 条线段的两个端点, 然后有多次询问, 每次询问, 问你线段 x 和 线段 y 是否相交。 若线段 A 和线段 B 相交且线段 A 和线段 C 相交,那么线段 B 和线段 C 相交。 1 < n < 13 题解: 暴力求线段是否相交, 然后再跑个 Floyd 或者并查集 ...
分类:
其他好文 时间:
2020-02-21 16:34:06
阅读次数:
77
"P1613 跑路" 预处理出所有一次能到的节点,然后floyd ...
分类:
其他好文 时间:
2020-02-21 16:16:34
阅读次数:
73
这一算法与之前的Bellman-F=Ford算法一样,都可以判断负环 只需要检查dp [i] [j] 是负数的顶点i即可 1 // 求解任意两点间的最短路径问题 2 // Floyed-Warshall算法 3 // 复杂度O(N^3),N为顶点数 4 5 #include <cstdio> 6 # ...
分类:
编程语言 时间:
2020-02-16 19:07:56
阅读次数:
76
Floyd算法为什么把k放在最外层? - 知乎 https://www.zhihu.com/question/30955032高票答案: 简单地总结一下:K没放在最外面一定是错的,但是在某些数据比较水的情况下可能会ACfloyd的本质是DP,K表示的是的DP的阶段,经过这个点松弛或者不经过这个点,如 ...
分类:
其他好文 时间:
2020-02-10 22:36:18
阅读次数:
133
继续复习数据结构和算法,总结一下求解最短路径的一些算法。 弗洛伊德(floyd)算法 弗洛伊德算法是最容易理解的最短路径算法,可以求图中任意两点间的最短距离,但时间复杂度高达$O(n^3)$,主要思想就是如果想缩短从一个点到另一个点的距离,就必须借助一个中间点进行中转,比如A点到B点借助C点中转的话 ...
分类:
编程语言 时间:
2020-02-10 00:08:40
阅读次数:
70
题意: 给两个字符串,以及m个从字符a变换到b的代价,问把两个字符串变得相同的最小代价 思路: 将字符串变换的代价当做一条有向边建图,之后跑floyd,得到从字符i变成j的最小代价dis[i][j] 之后遍历两个字符串的每一位,不相同的话枚举变成什么字符所需要的代价最小,如果找不到这样一个中间点使得 ...
分类:
其他好文 时间:
2020-02-06 23:23:18
阅读次数:
69
Floyd() 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N = ???; 5 const int INF = 0x3f3f3f3f; 6 int n, m; 7 int a, b, x; 8 int dis[N][ ...
分类:
其他好文 时间:
2020-02-05 11:44:17
阅读次数:
47