#P4659. [BalticOI 2008] 阀门

[BalticOI 2008] 阀门

题目描述

成为码农多年的你,已经厌倦了码农生活。你决定跳槽,去做一些不一样的事情。

正在寻找下一份工作的你,被一份水产养殖的工作吸引住了。“太酷了!”并且,鱼是很好的生物 嗯切绘也是这么想的 。所以你毫不犹豫地去应聘了。幸运的是,你成功拿到了 Offer。今天是你工作的第一天。

你的老板已经给你分配了任务:分隔两个蓄水池。你手上的操作指南告诉了你如下信息:

这两个蓄水池之间有一些管道连通,每个管道有两个阀门。当两个阀门同时开启时,这个管道就处于开启状态,反之处于关闭状态。阀门用开关控制。同一个开关会控制一些阀门,但是每一个阀门都只被一个开关控制。有可能一个管道上的两个阀门被同一个开关控制,也可能有开关不控制任何阀门。

0

开关以以下两种方式控制阀门:

  • 当开关闭合时阀门打开,当开关断开时阀门关闭
  • 当开关闭合时阀门关闭,当开关断开时阀门打开

玩了一会儿开关之后你突然意识到你的编程经历会十分有用。给出每个阀门被哪个开关所控制,判断是否可能关闭所有管道,如果可以,找出这种合法配置下每一个开关的状态。

输入格式

标准输入的第一行包含两个整数 nnmm,分别表示管道数和开关数。开关被从 11mm 标号。

接下来的 nn 行描述管道,一行用四个整数 a,sa,b,sba,s_a,b,s_b​​ 描述一个管道,a,ba,b 代表控制该管道的开关(1a,bm1\le a,b\le m)。sas_asbs_b​ 为 0011,并与描述中的操作模式相符,si=0s_i=0 表示当且仅当开关 ii 断开时阀门关闭,si=1s_i=1 表示当且仅当开关 ii 闭合时阀门关闭。

输出格式

如果有可能关闭所有管道,标准输出应包含 mm 行,如果开关 ii 断开,第 ii 行应输出 00,如果开关 ii 闭合,第 ii 行应输出 11。如果有很多可能的答案,你的程序可以输出任意一种。

如果不可能关闭所有管道,你的程序应输出一行,包含一个单词 IMPOSSIBLE

3 2
1 0 2 1
1 0 2 0
1 1 2 1
0
1
2 1
1 0 1 0
1 1 1 1
IMPOSSIBLE

提示

数据范围

对于 30%30\% 的数据,n40,m20n\le 40, m\le 20

对于所有数据,1n2.5×105,1m5×1051\le n\le 2.5\times 10^5, 1\le m\le 5\times 10^5​​。