(GCJ-2008 Round 3 C) No Cheating(最大独立集)
最近看了下白书,又是收获满满 (PovoP)
题意:
给你一张M x N 的教室(图),给出能做以及不能做的位置。坐在位置 (x,y) 的学生,可以偷看 左右,两个斜前方四个位置的学生的答案。所以老师为了防止作弊,问在给出考场最多能够安排多少学生。
思路:
像给出矩阵(邻接表)然后然后放置问题,我们可以想到dfs 以及 二分图。二分图对邻接表建图 常规便是以 建一个行图,列图。然后对行列进行匹配,但是怎么匹配呢?
ryryryryryry...二分图重要在于 以什么关系来建图。题中给出了 前后左右不能相邻,那我们就建立关系。如果要时所有的不会作弊,即最后得到的任意两点都不相邻的最大顶点集合。
这个便是图的最大独立集问题。而所有边都链接着 x 为偶数的顶点和 x为奇数的顶点,因此正是一个二分图。
根据性质:最大独立集 = 顶点数 - 最小顶点覆盖数 = 定点数 - 最大匹配数。