随笔分类 -  图论

摘要:模板 Kosaraju算法 int V; // 顶点数 vector<int> G[MAX_V]; // 图的邻接表表示 vector<int> rG[MAX_V]; // 把边反向后的图 vector<int> vs; // 后序遍历顺序的顶点列表 bool used[MAX_V]; // 访问标 阅读全文
posted @ 2018-09-13 18:55 shuai_hui 阅读(147) 评论(0) 推荐(0)
摘要:题意:求11到nn的第kk短的路径长度,如果超过TT输出Whitesnake!Whitesnake!,否则输出yareyaredawayareyaredawa。 好无以为 , 这就是一道模板题, 当是与之不同的是有T的限制,还要注意是在所有满足条件的边中的第k条 , 比赛的时候题意理解问题,导致无法 阅读全文
posted @ 2018-09-10 23:17 shuai_hui 阅读(163) 评论(0) 推荐(0)
摘要:现在来了解A*算法是什么 现在来解决A*求K短路问题 在一个有权图中,从起点到终点最短的路径成为最短路,第2短的路成为次短路,第3短的路成为第3短路,依此类推,第k短的路成为第k短路。那么,第k短路怎么求呢? 对于第k短路,可以想到的一个比较朴素的算法就是广度优先搜索,使用优先队列从源点s进行广搜, 阅读全文
posted @ 2018-09-10 22:32 shuai_hui 阅读(1848) 评论(1) 推荐(0)
摘要:分层图可以处理从图中选取k条边使其边权变为0,求最短路 Description Input (Prefix.in) Output (Prefix.out) #include<queue> #include<cstdio> #include<cstring> #include<iostream> #d 阅读全文
posted @ 2018-09-03 21:12 shuai_hui 阅读(703) 评论(0) 推荐(0)
摘要:其实就是判断是否为三连通图 三连通图指的是去掉3个点就不连通的图,但是并没有直接求三连通的算法。著名的Tarjan算法可以求解连通和割点,再枚举删除一个点就能达到三连通的目的。 先看用例2,是由用例1去掉一条边而变成非三连通图的: 至少造成了2和3非三连通: 我们来思考如何推导出2和3非三连通,假设 阅读全文
posted @ 2018-07-14 14:01 shuai_hui 阅读(262) 评论(0) 推荐(0)
摘要:一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度。 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图 阅读全文
posted @ 2018-07-14 11:13 shuai_hui 阅读(1139) 评论(0) 推荐(0)
摘要:/*树的直径是指树的最长简单路。求法: 两遍BFS :先任选一个起点BFS找到最长路的终点,再从终点进行BFS,则第二次BFS找到的最长路即为树的直径; 原理: 设起点为u,第一次BFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话 阅读全文
posted @ 2018-06-13 08:39 shuai_hui 阅读(199) 评论(0) 推荐(0)