CF 515D 图,贪心

来源:互联网 发布:知乎 订阅 编辑:程序博客网 时间:2024/04/29 16:36

题目链接:http://codeforces.com/problemset/problem/515/D


感觉是挺有意思的一道题目


题意:给你一个n*m的矩阵,要求你用1*2的方格把这个矩阵给填满,其中格子是"*"号的格子不能填,如果不存在填法或者存在多种填法就输出"Not unique"。如果存在就输出填满后的矩阵,填充的方式如sample所示


思路:对于相邻的两个"."进行连边,并对这些点标记度数。然后采用贪心的方法,将度数为1的点都放入队列,对每个这样的点采取贪心的放置方式(某个点如果度数为1的话,那么它的放置的方向一定是确定了的,所以可以贪心放置),放置了1*2的方格后对删掉连接这个格子的所有边,并将所有度数为1的点再次放入队列(有没有一种拓扑的感觉)。如果还有剩下的点没被方格覆盖,就说明他们的度数大于等于2,那么它们之间的放置方法一定不唯一,肯定输出"Not unique"。最后再扫描一下所有的方格,如果还有没有被覆盖的格子的话,也输出"Not unique"。


代码:


0 0