【CF741C】Arpa's overnight party and Mehrdad's silent entering 题解

题目大意

  有 n 对情侣坐在 2n 个板凳上,板凳排成环形。每张凳子恰好坐一个人。
  现在有两种食物分给他们。规定:1、每对情侣中,俩人不能分到同一种食物;2、环上任意三个相邻的人,不能全分到同一种食物。
  给出情侣关系,请构造一种方案或输出 -1。
  n<=10^5

题解

  大体思路是:我给这幅图连边,然后 01 染色,成功则输出方案,不成功则输出 -1。定义两个点直接相连表示这两点不同色。
  (最后会发现一定有解)

  首先,有情侣关系的两个点肯定是要连边的了。
  考虑环上相邻三个点的连边情况,只有以下三种情况(不考虑这三个点中的情侣关系):

  会发现,一定会有一条边连着相邻的两个点。那我们考虑直接在相邻的点上连边。

  于是构造方法如下:首先情侣连边,然后在原图的相邻点对上,隔一对连一条边,形如:

(蓝边表示情侣连边,红边表示相邻点对隔一对连一条)

  为什么要隔一对连一条?因为这样可以限制每个点的度数最多为2,即图上的环全是简单环。
  为什么这样没有奇环?因为如果有奇环,那么奇环上必有相邻的两条边同色。而根据定义,红边和蓝边都不可能相邻。