首页 > 其他分享 >寒假day6 2.7

寒假day6 2.7

时间:2024-02-07 14:12:07浏览次数:24  
标签:day6 割点 SCC 割边 返祖 寒假 low 2.7 横叉边

图论

割点,割边

如果删去一点,整个图的连通块数量增加,即是割点。

只有环上的边不是割边。

tarjan

dfs 树上不存在横叉边,只有反祖边。

判断一点是否是割点

对于一点,判断它的子树中是否有能连接到该点上方的返祖边。

记录 \(low_y\) 代表子树中能回溯到的最小的 dfn 值。

判断:\(low_n>dfn_x\)

注意对于根节点,必须有超过一个儿子才为割点。

求割边

与割点同理。

\(low_y>dfn_x\)

其中,要判断 \((x,y)\) 是否是割边,\(x\) 是 \(y\) 的父亲。

显然,非树边一定不是割边。

重边情况

特殊处理一下即可。

点双,边双

边双:对于一个子图,没有任何割边。

显然,边双彼此之间以割边相连

一个边双?

点双

任何一个点删去后都不影响连通性。

一个点可能分属多个点双。

SCC

环是什么?

若 \(x\) 可达 \(y\),且 \(y\) 可达 \(x\),则称其强联通。

强联通具有传递性

对 SCC 进行缩点后,会变成一个 DAG。

注意,在有向图的 dfs 中存在横叉边。

  • 非树边:完全没有

  • 返祖边:有用

  • 横叉边:部分有用

用栈来维护 SCC。

如果存在返祖边,SCC会变大。

横叉边:假设 \(x\rightarrow y\) 是一条横叉边,若 \(y\) 在 LCA 的一个 SCC 里,就是有用的,此时等价于返祖边;否则没用。

类似割边。

把最浅的点视为代表点。

注意,此时 low 要维护在栈中的最小 dfn。

用 low 来实现隐式合并。

P3469

求每个点是不是割点后统计把 dfs 树分成了几部分,排列组合统计。

P1407

尝试给边加上方向,如果是夫妻关系:男 $\rightarrow $ 女,情人:女 \(\rightarrow\) 男。

看一下每对关系是不是在一个强联通分量。

UOJ67

考虑树是 \(n\) 个点,\(n-1\) 条边的连通图。

连通:不是割点

边数:自己判

P3225

sb计数题

缩点后会形成一棵树。在每一个叶子都建一个出口。

至于为什么会形成一棵树?

缩完以后如果不是树,则证明有环(无向图),于是可以再缩。

二分图

选出一些边,使得没有共同节点。

增广路/匈牙利算法

从一个匹配点出发,经过一条匹配边,再经过一条非匹配边,……,最后到达一个非匹配点。

如果存在这样的增广路,一定能使答案增大。

P2055

把床建在左部,人建在右部,按照能不能睡连边,进行最大匹配。

P4304

最小点覆盖

选择最少的点使得每条边都能选中。

做法看ppt。

最大独立集

最小点覆盖的补集。

对网格图进行二分图染色。

发现马攻击的位置一定与自己颜色不同。

把具有攻击关系的点连边,对二分图求最大独立集。

P1129

每一行建点,每一列建点,如果 \((x,y)\) 是黑色,则把 \(x\) 和 \(y\) 连边。

结论:如果有解,则是完美匹配。

不会证明。

网络流

源点 \(S\),汇点 \(T\)。

\(\sum_{e\in in}=\sum_{e\in out}\)。

最大化 \(\sum_{e\in{S}}\)。

后面没听懂。

如果找不到增广路,就是最大流(?)

EK

Dinic

dinic:\(O(n^2m)\),但复杂度玄学。

最大流最小割

二分图匹配转网络流

时间复杂度 \(O(m\sqrt{n})\)

圆桌问题

试题库问题

最小路径覆盖问题

拆点

最长不下降子序列问题

拆点

标签:day6,割点,SCC,割边,返祖,寒假,low,2.7,横叉边
From: https://www.cnblogs.com/BYR-KKK/p/18010881

相关文章

  • 2024牛客寒假算法基础集训营1个人补题题解(I)
    比赛链接:2024牛客寒假算法基础集训营1I、It'sbertrandparadox.Again!这么抽象的东西出得很好,下次别再出了。从bit和buaa不同的抽数规则可以得出一个结论:bit抽取具体坐标点的次数会明显小于buaa,甚至只有在几乎不可能的理想范围内两者抽取的次数才相近,因此因为样本量极大(1e5次......
  • 2.6寒假每日总结27
    如果说有什么感想的话,那就是对软件工程这一领域的敬畏和热爱。软件开发绝非易事,它需要我们不断地学习、实践和创新。但正是这种挑战和不确定性,使得软件工程充满了无限的可能和魅力。我愿意为这一领域付出我所有的热情和努力,因为我深知,软件工程不仅仅是一门技术科学,更是一种智慧与......
  • 牛客寒假训练赛第二场
    基本情况前面过的很顺,F吃满罚时,T4次WA4次最后乱搞过的,K有一点思路,但是码力跟不上,其他没做的题题目基本没思路。EFhttps://ac.nowcoder.com/acm/contest/67742/Ehttps://ac.nowcoder.com/acm/contest/67742/F两题虽然都是过了,但一个是提交前改了很久,一个是提交改了很久。E......
  • 2024牛客寒假算法基础集训营1
    2024牛客寒假算法基础集训营1A.DFS搜索思路:看dfs其实就是一道字符题目#include<bits/stdc++.h>usingnamespacestd;stringx="dfs";stringy="DFS";voidsolve(){intn;cin>>n;stringst;cin>>st;intxx=0,yy=......
  • 2024牛客寒假集训营第二场
    总的来说,这一场还是很不错的,但是还是有做的不好的地方,比方说靠别人给了D的思路,还有思维的太慢。不过继续努力吧!A.TokitsukazeandBracelet思路:签到题,直接按着题目的意思模拟就可以了。code:点击查看代码#include<bits/stdc++.h>usingnamespace......
  • 2024初三寒假年前集训测试3
    2024初三年前集训测试3ps:也不知道我为什么没写测试1,2的题解T1夕景昨日\(100pts\)题目描述\(Shintaro\)制作了\(n\)个开关,每个开关的状态可被设置为\(+\)或\(-\)。现在你有一个数列$A=(a_1,a_2,\dots,a_n)$,和一个初始值为\(0\)的变量\(v\)。你可以自由地操......
  • 寒假训练第3周(牛客冬训营)
    F-TokitsukazeandEliminate(hard)_2024牛客寒假算法基础集训营2(nowcoder.com)脑袋堵住了,红温没有写出来,后面想到思路直接给否定了,可惜题解:需要你找最右边第一个,直接先统计一下有多少个颜色的宝石,然后从左往右依次放入set到相应的颜色数就加答案,然后如果这种颜色宝石没有了......
  • 2024.2.5寒假每日总结27
    LeetCode跳跃游戏VI1696.跳跃游戏VI-力扣(LeetCode)题目描述给你一个下标从0开始的整数数组nums和一个整数k。一开始你在下标0处。每一步,你最多可以往前跳k步,但你不能跳出数组的边界。也就是说,你可以从下标i跳到[i+1,min(n-1,i+k)]包含两个端点的任......
  • 2024牛客寒假算法基础集训营2(小白)
    A.TokitsukazeandBraceletCode:#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){inta,b,c,cnt=0;cin>>a>>b>>c;if(a>=150)cnt++;if(a>=200)......
  • 2024牛客寒假算法基础集训营2
    题目链接A.模拟#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){intn;cin>>n;while(n--){inta,b,c;cin>>a>>b>>c;intans=0;if(a==150)ans+=1......