Description
$T$ 组数据。给定 $n$ 个人和若干人际关系,有些人有床。如果某两人 $A,B$ 互相认识且 $B$ 有床,则 $A$ 可以睡 $B$ 的床,自己也可以睡自己的床。求能否让所有指定的人都有床睡。$(1 \leq n \leq 50,1 \leq T \leq 20)$
Source
Solution
考虑建立一个 二分图 模型。
左部点表示不回家的学生(晚上要留宿),右部点表示在校学生(这些学生有床),接着对于 左部点 $A$ 与 右部点 $B$,若 $A,B$ 互相认识,则在它们之间连一条边,表示 $A$ 可以睡 $B$ 的床。不要忘记自己与自己连边,因为自己可以睡自己的床。最后判断最大匹配是否为左部点的数量即可。
网络流 模型同理,最后跑一遍 $\rm dinic$ 最大流也同样能得到答案。
Code
1 |
|