图论
文章平均质量分 52
acm算法图论
可可亚
这个作者很懒,什么都没留下…
展开
-
最小生成树算法-prim和kruskal
最小生成树Prim算法适用场景思路模版Kruskal算法适用场景思路模版Prim算法适用场景时间复杂度为O(n2)O(n^2)O(n2),适用于稠密图,按照邻接矩阵存储。思路总体思路于dijkstra算法类似,dijkstra算法每次找离原点最近的点,而prim算法每次找离集合最近的点,如果没学dijkstra的话建议先去学习一下,过程也与dijkstra算法类似,这里直接写模版了。模版int g[maxn][maxn]; //邻接矩阵int dist[maxn]; //到最小生成树的最短距原创 2021-02-25 15:15:02 · 230 阅读 · 0 评论 -
Floyd算法
Floyd算法解决的问题思想模版解决的问题多源最短路问题,可以求出所有点到所有其他点的最短路,时间复杂度为O(n3)O(n^3)O(n3),可以有负权,不能有负环。思想模版这么简单,直接记模版吧模版//g为邻接矩阵,经过floyd算法后变成就是点到点的最短路int floyd(){ for (int k = 1; k <= n; k ++) for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++)原创 2021-02-23 19:22:51 · 185 阅读 · 0 评论 -
Bellman-ford算法
Bellman-ford算法解决的问题思路模版特定问题解决的问题最短路问题,时间复杂度为O(n∗m)O(n * m)O(n∗m),可以有负权边,一般情况下都是SPFA算法更加优越,一般只有一种情况下必须使用Bellman-ford算法吗,那就是限制到最小距离的边数k,其他情况下一般SPFA算法更加适用。思路对每条边都进行松弛操作n - 1次,一点能实现最短路。松弛:例如一条边a->b,权值为w,那么dist[b]=min(dist[b],dist[a]+w)dist[b] = min(dis原创 2021-02-23 13:43:49 · 1004 阅读 · 0 评论