#P16530. [Dapc2024]Kitchens of Königsberg
[Dapc2024]Kitchens of Königsberg
题目背景
公元 1764 年,柯尼斯堡的桥梁已经成为组合数学爱好者的重要旅游景点。旅游宣传册声称,游客能够在走过恰好 座桥后,在附近的街头厨房享用传统肉丸。然而这些厨房还没有建成,因此你需要选择若干城区来安置厨房,使宣传内容成为现实。
题目描述
将柯尼斯堡建模为一个无向多重图:
- 河流分隔出的城区对应顶点;
- 桥梁对应无向边;
- 同一对城区之间可能存在多座桥,因此图中允许重边。
你需要选择一个城区子集,并在这些城区中设置厨房,使得恰好有 条桥至少有一个端点位于所选城区中。
一条桥即使两个端点都位于所选城区中,也只计数一次。
下图展示了第一个样例。若在城区 和 设置厨房,则桥 共六条桥被覆盖;在 和 设置厨房也是一种合法方案。

第一个样例的柯尼斯堡地图
输入格式
第一行包含三个整数 ,分别表示城区数量、桥梁数量以及需要被覆盖的桥梁数量。
接下来 行,每行包含两个整数 ,表示城区 与城区 之间有一座桥。
保证:
- ;
- ;
- ;
- ;
- 同一对城区之间可以出现多条边。
输出格式
如果存在合法的城区子集,输出子集中的城区数量,随后输出这些城区的编号。城区编号的顺序不限,空白与换行方式不限。
如果不存在合法方案,输出:
impossible
如果存在多种合法方案,可以输出任意一种。
样例 1
输入
4 7 6
1 2
1 2
1 3
1 3
1 4
2 4
3 4
输出
2
1 2
样例 2
输入
7 9 5
1 2
2 3
1 3
1 4
4 5
1 5
1 6
6 7
1 7
输出
3
4 2 3
样例 3
输入
8 7 6
1 2
1 3
1 4
1 5
1 6
1 7
1 8
输出
6
8 7 6 4 3 2
样例 4
输入
5000 0 1
输出
impossible
样例 5
输入
4 6 2
1 2
1 3
1 4
2 3
2 4
3 4
输出
impossible