稳定婚姻
主要是讲一下tarjan算法的正确性
我们的连边方案是对每一对已经有了的婚姻,从女方向男方连边,然后对于交往过的关系,从男方向女方连边
分析题意不难发现,如果某一对夫妻处于一个环中,那么这对婚姻关系就是不稳定的
证明一下,如果说一对夫妻不在某个环中但还是不稳定的,说明存在一条合法的路径,即
从环这里已经可以看出来是SCC了(所以以后看到环,可以往SCC上面想),我们来简单说明一下
首先,如果一对夫妻在同一SCC里面,那么这对夫妻一定处于一个环中(SCC中任意两个点一定都在一个环中,因为可以从一个点走到另一个点,然后从另一个点又走到这个点,就形成了一个环),也就是关系是不稳定的
其次,如果一对夫妻不处在同一SCC中,但是仍然同时存在一个环中,那么这个环以及夫妻双方各自所在的两个SCC合并起来就构成了一个更大的SCC,与SCC的极大性矛盾
然后介绍一下二分图的做法,主要是每次不要重新跑一遍完整的匈牙利,因为题目是已经给出了一个完备匹配了,每次只用从被破坏的这对夫妻的某个点出发找一条增广路就好了
update 2024.5.31
这里二分图的做法,找增广路是按照题意出发的,而根据我们完备匹配必须边的充要条件,我们发现其实就是一对关系是不是必须边
而我们对二分图必须边可行边判定的实际操作中也是按照tarjan做强连通分量实现的,所以两者是互通的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构