SSL集训 2021.07.12 提高B组 T4 Vani和Cl2捉迷藏【匈牙利算法】【传递闭包】

该博客介绍了如何利用匈牙利算法和Floyd传递闭包求解DAG图中最长反链长度的问题。首先定义了反链的概念,然后通过Dilworth定理将问题转化为最小链覆盖与最大匹配的关系,并详细解释了如何使用匈牙利算法求解最大匹配。最后,通过Floyd传递闭包将可相交的链转化为不可相交,以找到最长反链。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目大意

求出一个DAG的最长反链长度。

思路

首先给出反链定义:反链是一个偏序集S的子集,其中任意两个元素不可比较
在此题中就是链上的任意两个点不可比较。
根据Dilworth定理可得最小链覆盖=最长反链长度
而最小链覆盖(不能相交的)=点数n-最大匹配数ans,
而我们可以用匈牙利算法来求二分图最大匹配。
最后一步就是把 最小链覆盖(可相交)转化为最小链覆盖(不可相交)
我们做一遍floyd传递闭包,就可以使一些本来会相交的路径分离开。

代码

//Standard IO
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值