![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【图的连通】
张松超
这个作者很懒,什么都没留下…
展开
-
HDU ~ 1269 ~迷宫城堡 (强连通分量)
思路tarjan模板题,直接上就好了,连通分量只有一个就是强连通图。#include <bits/stdc++.h>using namespace std;const int MAXN = 1e4+5;typedef long long LL;int n, m;int DFN[MAXN], LOW[MAXN], sccno[MAXN],原创 2018-10-19 14:33:10 · 177 阅读 · 0 评论 -
HDU ~ 4612 ~ Warm up(边双联通缩点 + 树的直径)
题意N个点M条边的图,问如果加一条边, 最少可以剩下多少个桥?思路边双联通缩点以后形成一棵的树,所有树边均为桥。环上的边显然不是桥,所以我们使得最长的一条链称为环,也就是直径。那么答案就是:原来的桥数 - 直径坑点是:有重边!!!重边自然不算是桥了。#include <bits/stdc++.h>using namespace std;const int MAXN ...原创 2018-12-03 18:25:36 · 188 阅读 · 0 评论 -
HDU ~ 4685 ~ Prince and Princess (二分图匹配(网络流) + 强连通缩点)
题意T组测试数据,每组先输入n,m表示有n个王子和m个公主,接下来n行,每行先输入k表示,第i个王子有K个喜欢的公主,然后输入这k个公主的编号。每个王子只能和喜欢的妹子结婚,国王要求给他一个表,每个王子可以和几个公主结婚,按序号升序输出妹子的编号。这个表应满足所有的王子最终都有妹子和他结婚,即必须保证王子与这些对象中的任意一个结婚,都不会影响让剩余的王子中突然有一个人没婚可结了。思路其实基本...原创 2018-11-13 12:57:34 · 389 阅读 · 0 评论 -
POJ ~ 1904 ~ King's Quest (强连通缩点,思维)
题意先输入N表示有n个王子,接下来N行,每行先输入K表示,第i个王子有K个喜欢的公主,然后输入这K个公主的编号。每个王子只能和喜欢的妹子结婚,大臣给出一个匹配表,每个王子都和一个妹子结婚,但是国王不满意,他要求大臣给他另一个表,每个王子可以和几个公主结婚,按序号升序输出妹子的编号。这个表应满足所有的王子最终都有妹子和他结婚,即必须保证王子与这些对象中的任意一个结婚,都不会影响让剩余的王子中突然有...原创 2018-11-07 19:19:39 · 251 阅读 · 0 评论 -
HDU ~ 4635 ~ Strongly connected (强连通 + 缩点 + 贪心)
题意T组测试数据,每组输入n,m表示n个点m条边,问最多增加多少条边可以使得图仍然不为强连通图。思路首先强连通缩点。①找到入度为0或者出度为0且包含点最少的缩点,把该缩点内部补成完全图,假设该缩点内部含有xxx个点,则边数为x∗(x−1)x*(x-1)x∗(x−1)②除了xxx那个缩点包含的点以外其他点补成完全图,假设有yyy个点,则边数为y∗(y−1)y*(y-1)y∗(y−1)③...原创 2018-11-07 14:55:13 · 259 阅读 · 0 评论 -
POJ ~ 3177 ~ Redundant Paths(边双连通 + 缩点)
同POJ ~ 3352 ~ Road Construction (边双联通 + 缩点)数据链接:数据//#include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;#include &amp;amp;amp;lt;cstdio&amp;amp;amp;gt;#原创 2018-11-06 20:27:32 · 150 阅读 · 0 评论 -
POJ ~ 3352 ~ Road Construction (边双连通 + 缩点)
题意给你N个点,M条边,问最少增加多少条边可以使得整个图变为边双连通的?思路边-双连通求法①先做一次dfs标记出所有的桥②在做一次dfs找出边-双连通分量。因为边-双连通分量是没有公共结点的,所以只要在第二次dfs的时候保证不经过桥即可。求得边-双连通分量以后,把每个连通分量看作点,然后会形成一棵树。若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么至少增加的边数 ...原创 2018-11-06 20:23:52 · 190 阅读 · 0 评论 -
HDU ~ 4738 ~ Caocao's Bridges (桥)
题意输入N,M,然后输入M条边(u,v,w)表示u-v有一条边权为w的无向边,求w最小的桥,输出w。如果不存在桥输出-1,图不连通输出0。思路模板题?就是有两个坑点,①有重边②图不连通输出0#include &amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;const int MAXN = 1e5 + 5;const int INF = 0x3f3f3...原创 2018-10-23 17:02:16 · 152 阅读 · 0 评论 -
UVALive ~ 4287 ~ Proving Equivalences (强连通分量+缩点)
#include &lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 1e5 + 5;int DFN[MAXN], LOW[MAXN], sccno[MAXN], dfs_clock, scc_cnt;stack&lt;int&gt; S;vector&lt;int&gt; G[MAXN];void init(int ...原创 2018-10-21 13:03:41 · 182 阅读 · 0 评论 -
UVA ~ 796 ~ Critical Links (桥)
题意给定无向图,求割边,按照字典序输出割边。思路模板。#include &amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;gt;using namespace std;const int MAXN = 1e5 + 5;int DFN[MAXN], LOW[MAXN], dfs_clock, iscut[MAXN];vector&amp;amp;amp;amp;amp;lt;in原创 2018-10-22 17:49:33 · 272 阅读 · 0 评论 -
UVA ~ 315 ~ Network (割点)
题意给你一张图,求割点个数。思路割点也叫割顶。①根节点有两个及以上的就是割点。②如果有一条边u-&amp;amp;amp;amp;amp;amp;gt;v,且LOW[v] &amp;amp;amp;amp;amp;amp;gt;= DFN[u],那么u就是割点。#include &amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;gt;using n原创 2018-10-22 14:03:01 · 214 阅读 · 0 评论 -
POJ ~ 1236 ~ Network of Schools(强连通分量+缩点)
题意N个学校,每个学校维护一个列表,当该学校接收到信息后会转发到列表中的学校。先输入N,然后N行,每行以0结束,表示每个学校维护的列表,问:(1)至少将信息发送到几个学校,才可以通知到所有学校。(2)至少加几条边才可以使得,将信息发到任意一个学校都可以通知到所有学校。//#include &amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;gt;#include &am原创 2018-10-19 16:45:39 · 159 阅读 · 0 评论 -
牛客练习赛32 ~ D ~ Where are you(kruskal + 边双联通)
题目链接思路kruskal过程,我们按边权排序,然后依次加入,同时用并查集维护连通性。本题难以处理的其实是边权相同的边,我们把这些边一起考虑。假设此时最小生成树的这个森林中,我们把在一棵树(一个集合)看作一个点,以这些边权相同的边(如果这条边不太同一棵树中)建立新图,可以证明桥边一定必选。#include &lt;bits/stdc++.h&gt;using namespace s...原创 2018-12-03 18:58:35 · 253 阅读 · 0 评论