双连通分量
文章平均质量分 84
芋智波佐助
菜鸟一只
展开
-
HDU 4612 Warm up / 边双连通分量
求建一条路后 最小的桥的数量缩点 形成一棵树 每条边都是桥 求出这棵树的直径 在树的直径2端建一条边是最优的 这样可以使直径上的桥都去掉有重边 重边不能算一条 要多次算做tarjan时 对于u-v 的一条边 那么在枚举v的边的时候 如果第一次遇到fa 就continue 因为重边要算上去啊 第一次不算是因为是无向图而且要手动扩栈啊 #pragma comment(linke原创 2014-02-18 17:44:16 · 1063 阅读 · 0 评论 -
POJ 3352 Road Construction / 边双连通分量
给你一张图 求最少加几条边可以使全图双连通首先缩点 然后求有几个叶子结点 设有n个 答案是(n+1)/ 2 如果n=1那么需要1条(和根相连)如果n=2 需要2条这两个叶子节点相连 如果n=3 需要2条(其中2条相互连接 在求双连通 。。。。)这题主要是学习求边双连通分量的算法有些蛋疼1.应该是无向图 网上有很多人用了求有向图强连通分量的tarjan算法 特地对比了一下2.有些原创 2014-02-17 20:46:17 · 1001 阅读 · 0 评论 -
POJ 3177 Redundant Paths / 边双连通分量
和上一题一样 给你一张图 求最少加几条边可以使全图双连通 多了重边多加了一个bool的数组 判断重边 重边只算一条#include #include #include #include #include using namespace std;const int maxn = 5010;vector G[maxn];bool ok[maxn][maxn原创 2014-02-17 21:50:11 · 972 阅读 · 0 评论 -
TOJ 2018 POJ 1523 SPF / 割点
求去掉每一个割点后剩下几个连通分量#include #include #include #include #include using namespace std;const int maxn = 1010;vector a[maxn], bcc[maxn];int pre[maxn];int low[maxn];bool iscut[maxn];原创 2014-02-16 14:58:32 · 1117 阅读 · 0 评论 -
POJ 2942 Knights of the Round Table 黑白着色+点双连通分量
题目来源:POJ 2942 Knights of the Round Table题意:统计多个个骑士不能参加任意一场会议 每场会议必须至少三个人 排成一个圈 并且相邻的人不能有矛盾 题目给出若干个条件表示2个人直接有矛盾思路:求补图 可以坐在一起 就是可以相邻的人建一条边 然后如果在一个奇圈上的都是满足的 那些不再任何一个奇圈的就是不满足 求出所有奇圈上的点 总数减去它就是答案首先有原创 2014-06-08 00:16:56 · 1074 阅读 · 0 评论 -
Light OJ 1291 Real Life Traffic 双连通最少添边数
题目来源:Light OJ 1291 Real Life Traffic题意:最少添加几条边 可以使全图边双连通思路:缩点 重新构图 答案就是(叶子节点数+1)/ 2#include #include #include #include #include using namespace std;const int maxn = 10010;struct Edge{ i原创 2014-06-07 14:04:43 · 1294 阅读 · 0 评论 -
Light OJ 1026 Critical Links 求桥
题目来源:Light OJ 1026 Critical Links题意:输出桥思路:模版#include #include #include #include #include using namespace std;const int maxn = 10010;struct Edge{ int u, v; Edge(){} Edge(int u, int v):原创 2014-06-07 13:41:09 · 1170 阅读 · 0 评论