检测到 KaTeX 加载失败,可能会导致文中的数学公式无法正常渲染。
#题面
#题目描述
译自 POI 2011 Round 2. Day 1. B「Garbage」
给定一张 个点 条边的无向图,每条边居黑白二色之一,且有一个黑或白的目标颜色。
有一辆卡车,可以从任意一个结点开始,经过一个简单环(不经过重复边或起点以外结点的环)回到出发点,将所有经过边的颜色反转,即黑色变为白色,白色变为黑色。卡车可以从不同的结点出发行走若干次。
请给出一个合法的方案,使得每条边最终都变为目标颜色,或判定不可行。
#输入格式
输入的第一行包含两个空格分隔的正整数 和 ,表示图的点数和边数。
接下来 行,每行包含四个空格分隔的正整数 ,表示一条联结结点 与 的边,初始颜色和目标颜色分别为 与 。
你可以认为若存在合法方案,则存在一个卡车经过总边数不超过 的方案。
#输出格式
如果不存在合法方案,输出一行 NIE
(波兰语「否」);
否则按下列格式输出任意一种方案:
- 第一行包含一个整数 ,表示卡车行驶环路的总数;
- 接下来 行,每行描述一条环路:
- 首先是一个正整数 表示环路经过的边数,后接一个空格;
- 接下来 个空格分隔的整数,依次表示环路上结点的编号。
#输入输出样例
样例输入 #1
6 8
1 2 0 1
2 3 1 0
1 3 0 1
2 4 0 0
3 5 1 1
4 5 0 1
5 6 0 1
4 6 0 1
输出样例 #1
2
3 1 3 2 1
3 4 6 5 4
样例解释 #1
样例输入 #2
6 8
1 2 0 1
2 3 1 0
1 3 0 1
2 4 0 0
3 5 1 1
4 5 0 1
5 6 0 1
4 6 0 0
样例输出 #2
NIE
样例解释 #2
#数据范围与提示
- 对于 的数据,有 ;
- 对于 的数据,,,,。
#思路
读题可知本题需要在图中求出若干个欧拉回路。
显然,没有改变权值的边可以直接忽略掉。之后计算每个点的度数,根据欧拉回路的定义,图中不能存在度数为奇数的点,如果发现图中存在度数为奇数的点则无解。
之后使用 dfs 求出这些欧拉回路即可。
#代码
1 |
|