随笔分类 - 图论-割点
摘要:桥 定义 无向连通图中如果一条边断开后能使图不连通则条边就是桥。 方法 dfs+并查集 每条边只能走一次。如果搜到一个点还在访问中说明他们是双连通分量,用并查集合并。 Code void dfs(int x) { for(int g=h[x]; g; g=d[g].n) { if(c[g]) con
阅读全文
摘要:题目链接 我们先对于有向图缩点,变成一棵树。 然后我们对于每个树上且在原图中的分割点节点所对应原图中的连通块考虑。 假设这里没有割点,很明显,只需要放2个出口即可。 如果有一个割点,说明这个点是树上的叶子节点,需要放1个出口。 如果有两个或以上的割点,无论哪个割点被割,都可以往另一个方向逃,所以这个
阅读全文
摘要:题目链接 首先这个点删去之后必然与剩下 个点失去相连。 如果这个点能使其它点失去相连,说明这个点为割点。 然后统计一下每个儿子与父亲的影响即可。 Code // Problem: #10104. 「一本通 3.6 练习 5」Blockade // Contest: LibreOJ /
阅读全文
摘要:题目链接 首先考虑删走一个点后能增加联通块数量,则这个点一定是割点。 然后就完了啊 tarjan完(虽然我没有打tarjan)我们就分别判断每个点是不是割点。如果是看一下是否有父。统计一下即可。 要注意题目一定要割,所以如果有 个联通块要输出 。 Code // Probl
阅读全文
摘要:题目链接 首先如果一个点满足答案,则这个点一定是割点。 然后我们可以从 点开始搜,对于每一个点,如果 点在它的儿子内,说明这个点分离了 和 。 如何判断 是否在它的儿子内,只需要在搜索这个儿子前后判断一下即可。 Code // Problem
阅读全文
摘要:题目链接 题目就是给出一幅图,求其割点个数。 由于 ,所以可以暴力删点。 当然也可以跑割点。 (感谢crx老师教我割点模板) 暴力Code // Problem: #10100. 「一本通 3.6 练习 1」网络 // Contest: LibreOJ // UR
阅读全文