每个婚礼有两个时间点,只能取自中一个,n个婚礼看成n对点
枚举2n个点,看那两个点会冲突,只能选一个,即如果i与j冲突,添加边(i,~j)
两个时间点i与j不冲突的条件:start[i]>=end[j]或end[i]<=start[j]
所以i与j冲突的条件为:start[i]<end[j]&&end[i]>start[j]
然后,缩点,判是否有解,拓扑排序求解即可
代码:
每个婚礼有两个时间点,只能取自中一个,n个婚礼看成n对点
枚举2n个点,看那两个点会冲突,只能选一个,即如果i与j冲突,添加边(i,~j)
两个时间点i与j不冲突的条件:start[i]>=end[j]或end[i]<=start[j]
所以i与j冲突的条件为:start[i]<end[j]&&end[i]>start[j]
然后,缩点,判是否有解,拓扑排序求解即可
代码: