![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
强连通分量
ToRe.
这个作者很懒,什么都没留下…
展开
-
HDU 1269 迷宫城堡(tarjan求强连通分量)
题目链接 思路 tarjan求强连通分量模板题 代码 #include <bits/stdc++.h> using namespace std; int low[10005], dfn[10005], vis[10005], tot = 0, n, ans; stack<int> st; vector<int> e[10005]; void tarjan(i...原创 2019-01-26 09:25:07 · 247 阅读 · 0 评论 -
tarjan总结
随便总结下给自己以后回忆,结论全凭感觉加一点点实践,如有错误欢迎指出。 图为单向边 需要vis标记是否在队列 图为无向边 求双边连通,求桥 无重边 深搜不搜爹,递归多传个爹是谁 有重边 深搜不搜同边,链式前向星存图,同边的id差1 求割点 搜不到返祖边即是割点,low[v] >= dfn[u] 求割边 儿子搜不到返回爹的边即割边,low[v] > dfn[u] ...原创 2019-03-14 11:23:03 · 120 阅读 · 0 评论 -
HDU 4612 Warm up(tarjan求割边+缩点+树形DP)
[题目链接][http://acm.hdu.edu.cn/showproblem.php?pid=4612] 题意 给你一个连通图,你可以任意加一条边,求最小桥数量。 思路 先用tarjan求所有桥,将双边连通的点缩点,再对缩点后的新图加上桥,得到cnt新图的点数。 求新图的直径,在直径两端加一条边最优(可以消去最多的桥),答案即,新图点数-1-直径长度。 代码 #include <stdi...原创 2019-03-07 16:50:27 · 157 阅读 · 0 评论 -
HDU 3594 Cactus(有向仙人掌图判断)
题目链接 题意 判断一个有向图是不是仙人掌图 思路 思路看这 代码看这 据说数据水,这个比较详细应该正确 tarjan 先判断图是否强连通 再判断是否为仙人掌 假设图强连通,结论如下 仙人掌图的 DFS 树没有横向边。 设某个点 v 有 a(v)个儿子的 Low 值小于 DFS(v),同时 v 自己有 b(v)条逆向边,那么 a(v)+b(v)<2。 代码 #include <bits...原创 2019-09-25 21:49:07 · 186 阅读 · 0 评论 -
HDU 3394 Railway(桥+点双)
题目链接 题意 给你一副无向图,求桥数量 和 属于多个环的边数量 思路 求桥好写,属于多个环的边数,仙人掌判断恰好这么处理,求点双,点双内的边数大于点数则点双内每条边属于多个环。 代码 #include <bits/stdc++.h> using namespace std; #define ll long long const int N = 10005; vector<i...原创 2019-09-26 21:49:52 · 172 阅读 · 0 评论