首页 > 其他 > 详细

AGC029F

时间:2020-05-24 19:35:05      阅读:52      评论:0      收藏:0      [点我收藏+]

题意

给定\(n-1\)\(\{1,2,...,n\}\)的子集\(E_i\)\(E_i\ge 2\)),每个子集选择两个点连边,使得最后形成一棵树。

做法

考虑二分图:\(u\longrightarrow id(i)(u\in E_i)\)
有解的必要条件为:删去任意节点\(u\),形成完美匹配,结合hall定理得到\(N(S)\ge |S|+1\)
然后考虑以下方式构造,会发现这是充要条件

做法:
\(1\)开始bfs
反复执行:令当前点为\(u\),找到没去过且\(u\in E_i\)\(i\),然后跑到\(i\)集合内没有去过的点,令\(u\)为其
若走不了了,则不符合\(N(S)\ge |S|+1\)
另外,若用dfs也可以,要等全部走一遍再判非法

AGC029F

原文:https://www.cnblogs.com/Grice/p/12952005.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!