题目大意
有 n 对情侣坐在 2n 个板凳上,板凳排成环形。每张凳子恰好坐一个人。
现在有两种食物分给他们。规定:1、每对情侣中,俩人不能分到同一种食物;2、环上任意三个相邻的人,不能全分到同一种食物。
给出情侣关系,请构造一种方案或输出 -1。
n<=10^5
题解
大体思路是:我给这幅图连边,然后 01 染色,成功则输出方案,不成功则输出 -1。定义两个点直接相连表示这两点不同色。
(最后会发现一定有解)
首先,有情侣关系的两个点肯定是要连边的了。
考虑环上相邻三个点的连边情况,只有以下三种情况(不考虑这三个点中的情侣关系):
会发现,一定会有一条边连着相邻的两个点。那我们考虑直接在相邻的点上连边。
于是构造方法如下:首先情侣连边,然后在原图的相邻点对上,隔一对连一条边,形如:
(蓝边表示情侣连边,红边表示相邻点对隔一对连一条)
为什么要隔一对连一条?因为这样可以限制每个点的度数最多为2,即图上的环全是简单环。
为什么这样没有奇环?因为如果有奇环,那么奇环上必有相邻的两条边同色。而根据定义,红边和蓝边都不可能相邻。