新建两个点,相当于两个虚拟小朋友,这样就不用考虑自己的意愿了,小朋友 n+1 是必须选0 , 和所有意愿是 0 的小朋友都是朋友的一个小朋友,n+2 同理看做必须选 1 。
考虑如果产生了矛盾,一个选1的小朋友和一个选0的小朋友是朋友:
为了方便计数,钦定关系是单向的,如果 a 选择 0 , b 选择 1 ,a b 是朋友,我们只记录这种关系,不用处理反过来的,因为每个矛盾必然对应一个这样的关系,我们称小朋友 a 生小朋友 b 的气 (非常形象?) 。
所以就是让生气的小朋友对最少,由生气的定义:不可能同时 a 生 b 的气 , b 生 a 的气 。
接下来就是套路的把图分成两部分,n+1这部分选 0 , n+2那部分选 1 。其中 0→1 (别想乱七八糟的(?)) 的边最少 , 于是可以转化成最小割问题,使用最大流求解。