![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
连通分量
文章平均质量分 52
。
kaka0010
退役ACMer/算法竞赛菜鸡
展开
-
Codeforces Round #731 (Div. 3) G. How Many Paths? 强连通分量缩点+拓扑
原题链接:https://codeforces.ml/contest/1547/problem/G目录题意分析Code题意给你一个n个点,m条边的有向图,可能存在自环。定义了四种状态:无法从1到v,输出-1有且仅有一条路径到v,输出1有不只一条路径到v,输出2有无数条路径到v,输出-1输出[1,n][1,n][1,n]所有点的状态分析遇到有环的图,最常见的做法就是缩点然后在DAG图上跑拓扑。本题的状态转移也是相当明显的,基本上没有什么思维量,看到tag应该就可以写出来了,只需要讨论一原创 2021-08-06 19:16:11 · 162 阅读 · 0 评论 -
2021牛客暑期多校训练营6 J.Defend Your Country 点双连通分量
原题链接:https://ac.nowcoder.com/acm/contest/11257/J目录题意分析Code题意给定n个点,m条边的无向图,每个点都有aia_iai的权值,定义重要程度为−1联通块大小∑ai-1^{联通块大小}\sum ai−1联通块大小∑ai,你可以删除任意条边(可以为0),问最大重要程度是多少。分析分两种情况讨论一下因为题目给定的图是连通图,那么如果n为偶数,直接输出答案。n为奇数的情况下,我们考虑删点,将联通块个数变为偶数。当然为了最优我们只删一个点肯定可以满原创 2021-08-03 10:45:50 · 275 阅读 · 0 评论 -
P5025 [SNOI2017]炸弹 线段树优化建图+缩点+DAG图上DP
原题链接:https://www.luogu.com.cn/problem/P5025目录题意分析Code题意在一个数轴上有n个点代表n颗炸弹,每颗炸弹引爆会引发r范围内的炸弹爆炸,问每颗炸弹引爆会最终引发多少颗炸弹爆炸,对答案∑i=1ni∗炸弹引爆数量\sum_{i=1}^ni*炸弹引爆数量∑i=1ni∗炸弹引爆数量%1e9+7分析锻炼代码能力的一道题,首先需要用到一个前置知识——线段树优化建图点击查看然后我们就可以连出所有这个炸弹能到的点,然后对在同一个强连通分量里的点进行缩点,这样可以让原创 2021-07-17 09:19:34 · 124 阅读 · 0 评论 -
牛客练习赛56 E.小雀和他的王国 tarjan+生成树上求直径
原题链接:https://ac.nowcoder.com/acm/contest/3566/E目录题意分析Code题意有n个点,m条边的图,开始保证图联通,你可以加上一条边,求任意去掉一条边后存在两点不连通的概率。分析非常有意思的题目,转化一下题意就是求添上一条边之后桥的个数/边的总数桥的个数/边的总数桥的个数/边的总数然后我们已知在一条树上,添上一条边之后,该链上所有的桥都没了,因此我们只要求树的直径就可以了,这样可以消除最多的桥。但本题是在图上而不是在树上,其实仔细观察生成树,发现所有桥原创 2021-05-17 14:25:23 · 103 阅读 · 2 评论 -
牛客练习赛80 D.分组 tarjan+倍增+二分
原题链接:https://ac.nowcoder.com/acm/contest/11170/D目录题意分析Code题意有n个点,m条边,你可以对边进行分组,每组内边的编号一定是连续的。设每个图的权值是这个图的强连通分量大小的平方和,且每组的权值不得超过k,问最少可以分成多少组。分析因为每组的边编号是连续的,满足单调性所以考虑二分。但如果每次都用二分去确定右边界,时间复杂度是n2lognn^2lognn2logn,显然不符合要求。然后去优化,这里用到倍增的思想,枚举2k2^k2k条边,如果在2k原创 2021-04-10 23:10:19 · 150 阅读 · 1 评论 -
牛客练习赛77 E小G的GLS图 割点+建图优化
目录题意分析Code题意有n个点,每个点都有权值,两个点之间有一条边当且仅当gcd(a, b) != 1,每次可以去掉一个点当且仅当连通块个数增加,然后移除改点和改点相连的所有边,问最多可以移除几个点。分析去掉一个点连通块增加这很明显就是割点的定义,但本题如果用n^2的复杂度去暴力建图肯定是不行的,因此要考虑怎么去优化建图。如果两个点可以相连说明他们的gcd不为1,什么时候gcd可以不为1呢,就是他们有公共质因子的时候。这样我们就可以建几个虚点代表质数,然后向虚点去连边,最后求割点。这时有几个细原创 2021-03-05 10:02:04 · 114 阅读 · 1 评论 -
2019 ICPC Asia Yinchuan Regional H - Delivery Route 强连通+最短路+拓扑
原题链接:https://nanti.jisuanke.com/t/42388题意有n个点,x条双向边且边权为正,y条单向边边权可以为负,问从某个点出发到全部点的最短距离。分析首先看到负权边,dij不能直接去用。然后就是这题刻意去卡了spfa,但没卡住spfa的玄学优化(可以自己去尝试)。这里说一下本题的正解,利用强连通分量和最短路来求。既然dij不能跑负权边,那我们只要保证让他只跑正权边就可以了,因此在加完双向边之后去找连通块,每个连通块内部跑dij,然后外部用拓扑。这里说两个细节开始原创 2021-03-01 15:02:34 · 317 阅读 · 1 评论 -
P2746 [USACO5.3]校园网Network of Schools (tarjan强连通)
原题连接题意分析题目中提到即使B在A的分发列表中,A也不一定在B的分发列表中,即告诉我们这是一个有向图中的tarjan问题。在有向图中,我们常常会想到缩点的方法,因为在同一个强连通分量中,任意两点都是可以任意到达的,因此我们将其看成一个点,从而把带环的图变成DAG图。那么问题一就很明了了,我们只要给每一个起点(入度为0)的强连通分量分配一个新软件,那么所有学校都可以获得新软件。问题二要求给任意一个学校分配新软件都可以传遍所有学校,意思就是求加几条边可以让整个图变成强连通图。一个图如果是强连通图,那原创 2020-06-07 12:59:21 · 201 阅读 · 0 评论 -
tarjan算法 (割点和桥)
最近刚学习了tarjan算法,发一篇博客写一下自己的心得和理解。在了解割点和桥之前,我们先理解什么是双连通。双连通和强连通分别是应用于无向图和有向图中的,那么在学习双连通之前,请自行学习求强连通分量的tarjan算法。在一张连通的无向图中,如果删去任意的一条连接u,v的边,但u, v仍然可以保持连通,那么我们可以称u,v之间是边双连通的。在一张连通的无向图中,如果删去任意的一个连接u,v的点,但u,v之间仍是连通的,那么我们可以称u,v之间是点双连通的。接着我们来认识割点和桥比如在这张图中,如原创 2020-05-23 15:38:16 · 678 阅读 · 0 评论 -
【算法竞赛进阶指南】(图论) Network 边双连通分量
题意分析:我们可以利用双连通分量e-dcc将图缩点变成一棵树, 树上的边即为桥的数量。接着我们分析加边的操作:如果两个点在一个双连通分量中,那么加边并不会影响当前桥的数量如果两个点不在一个双连通分量中,那么会影响桥的数量。可以转换为在树上加一条边,那么必然会形成一个环,接着只需要对环上的边进行标记,标记数为减少的桥的数量。找环的操作可以先找到两点的lca然后往上便利并标记即可。复杂度为O(M+Q*N),本题数据比较宽松,这样的作法可以直接过,当然也可以用并查集进行优化。#include &l.原创 2020-08-11 21:28:19 · 439 阅读 · 0 评论