QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 32 MB Total points: 100

#13175. 王国细分

Statistics

Byteotia 的国王 Byteasar 终于决定退位了。然而他有两个儿子,无法决定由谁来继承王位。因此,他计划将王国一分为二,让每个儿子各统治一半。

划分完成后,必须在连接两个半区的道路上修建岗哨。显然,修建岗哨的成本很高,因此理想情况下,两个半区之间的道路数量应尽可能少。

幸运的是,Byteotia 由偶数个城镇组成,城镇之间由道路连接。划分后,每个半王国应包含一半的城镇。每条道路(直接)连接两个城镇。道路在城镇之外不会相交,尽管它们可以通过立交桥或隧道。任意两个城镇之间最多直接由一条道路连接。

具体哪些城镇属于哪一半王国至关重要。你可以假设城镇之外的土地可以进行划分,使得连接同一半区内城镇的道路不会穿过边界。另一方面,每一条连接不同半区城镇的道路上都必须修建一个岗哨。

编写一个程序:

  • 从标准输入读取城镇及其连接道路的描述,
  • 确定一种将王国划分为两半的方案,使得两个半区包含的城镇数量相等,且连接不同半区城镇的道路数量最少,
  • 将结果输出到标准输出。

如果存在多个最优划分方案,你的程序可以任意选择其中一个。

输入格式

标准输入的第一行包含两个整数 $n$ 和 $m$,由一个空格分隔,分别表示城镇的数量和道路的数量,$2 \le n \le 26$,$2 \mid n$,$0 \le m \le \frac{n\cdot(n-1)}{2}$。城镇编号从 $1$ 到 $n$。接下来的 $m$ 行,每行包含两个由空格分隔的整数。第 $(i+1)$ 行(对于 $i=1,2,\dots,m$)包含数字 $u_i$ 和 $v_i$,$1 \le u_i < v_i \le n$,表示连接 $u_i$ 和 $v_i$ 的一条道路。

输出格式

你的程序应向标准输出写入一行。该行应包含 $\frac{n}{2}$ 个由空格分隔的整数。这些数字应为与 1 号城镇属于同一半王国的城镇编号,并按升序排列。

样例

输入 1

6 8
1 2
1 6
2 3
2 5
2 6
3 4
4 5
5 6

输出 1

1 2 6

图中的虚线显示了最优划分方案,该方案所需的岗哨数量最少。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.