
图论
文章平均质量分 75
fkjslee
无
展开
-
ACM_链式前向星
我只是发个链接 = =: http://blog.youkuaiyun.com/acdreamers/article/details/16902023转载 2016-03-11 12:00:27 · 435 阅读 · 0 评论 -
ACM_Tarjan
前言Tarjan: 适用范围 计算 1.割顶 2.割边 3.计算无向图的双连通分量 4.计算有向图的连通分量tarjan算法首先介绍几种概念 DFS森林: 集训队的学长以及我们平时讨论的DFS森林的意思一般是几棵DFS树, 然后问了一下, 学长说大家懂就好(囧), 其实DFS森林指的是一些图(无向或者有向都可以), 不一定是树, 而且可以是多个图, 这个在刘汝佳的算法指南以及我在网上百度上原创 2015-11-25 17:34:15 · 456 阅读 · 0 评论 -
ACM_lca
前言 lca(Least Common Ancestors) : 最近公共祖先, 一般题目的是给你一棵树(当然也有些题不会直接给你)题目的解法大多会让你向上找两个点的最近公共祖先, 比如上图的4 和 5的公共祖先是2, 9 和 7 的公共祖先是3, 3 和 8的公共祖先是3, 搭配的可能就还有一些其他的问题, 比如两点间的最短距离(边有权值, 而且边的权值可能会变) 或者搭配树形DP类似的东西原创 2015-11-21 10:52:54 · 1426 阅读 · 0 评论 -
acm_floyd任意两点的最短路(最简单无脑的最短路算法)
算法作用求给定图中任意两点间的最短距离时间复杂度O(v^3) V是顶点个数代码实现(3个for)g是用邻接矩阵传入的图, 如果两点之间没有路径, 设成inf, 否则设成边权, n是顶点个数, 顶点编号默认0~n-1, 最后i, j点的最短路径在g[i][j]中void floyd(int g[][], int n) { for(int k = 0; k < n; ++k)原创 2016-07-24 22:14:12 · 1634 阅读 · 0 评论 -
ACM_kruscal 计算最小生成树
算法作用计算最小生成树 生成树: 将一个图的顶点不变, 通过去除一些边, 使它成为一棵树 最小生成树: 所有生成树中的边权和最小的生成树 比如下面图1的最小生成树是图2 图1 图2时间复杂度O(ElogE)E是边数代码实现#include <iostream>#include <algorithm>using namespace std;const int N = 1e5 +原创 2016-07-24 23:03:52 · 649 阅读 · 0 评论 -
ACM_bellman ford(单源最短路)
算法作用计算单源最短路径, 给定图和起点后, 计算这个点到其他点的最短距离, 如果起点和终点都给定了也属于这类问题 比如 : 给定图如下 求1 到 其他各点的最短距离 可以计算出为 : 顶点 最短距离 1 0 2 3 3 4 4 11 5 22(口算的, 大概没算错吧)算法复杂度O(N * M) N是顶点个数, M是边数代码实现#inc原创 2016-07-25 23:11:40 · 372 阅读 · 0 评论 -
ACM_dijkstra单源最短路
时间复杂度O(E + VlogV) E是边数, V是顶点数具体算法dijkstra算法:找单源最短路的算法, 单源指的是起点固定且只有1个, 求到其他点的最短距离, 终点也固定的叫两点间的最短距离, 两种情况的复杂度是一样的, 所以都转化成单源最短路解决; 如图:求1到其他点的最短路! PS : dijkstra仅适用于边权为正的情况; dijksta是不断选出距离最小的点并不断的利用这个原创 2015-09-13 21:41:47 · 585 阅读 · 0 评论