#HK5349. 「POI2008 R3」王国划分 Subdivision of Kingdom
「POI2008 R3」王国划分 Subdivision of Kingdom
题目描述
题目译自 XV OI Olimpiada Informatyczna – III etap Podział Królestwa
拜托西亚国王 Bajtazar 决定退休。他有两个儿子,但他无法决定由哪个儿子继任王位。因此,他决定将王国一分为二,让两个儿子分别统治一半的领土。
在王国划分后,必须在连接两半王国的道路上建造哨所。由于建造哨所需要成本,连接两半王国的道路数量应尽可能少。
拜托西亚由偶数个城市组成,这些城市通过道路相连。划分后,每一半王国应包含一半数量的城市。每条道路连接两个城市。道路之间不在城市以外的地方相交或交叉,但可以有立交桥或隧道。任意两个城市之间最多有一条直接连接的道路。
在划分王国时,哪些城市属于哪一半非常重要。你可以假设城市以外的区域可以划分得当,使得连接同一半王国内城市的道路不会跨越边界。而每条连接不同半王国城市的道路上都需要建造一个哨所。
编写一个程序,完成以下功能:
- 从标准输入读取城市及连接它们的道路的描述,
- 确定一种将王国划分为两半的方案,使每一半包含相同数量的城市,且连接不同半王国的道路数量最少,
- 将结果输出到标准输出。
如果存在多个符合条件的划分方案,你的程序可以输出其中任意一个。
输入格式
输入数据的第一行包含两个整数 和 ,用单个空格分隔,分别表示城市数量和连接它们的道路数量,, 为偶数,。城市编号从 到 。
接下来的 行,每行包含两个整数,用单个空格分隔。第 行()包含数字 和 ,,表示连接城市 和 的道路。
输出格式
输出一行,包含 个整数,用单个空格分隔。这些数字应为属于包含城市 那一半王国的城市编号,按升序排列。
6 8
1 2
1 6
2 3
2 5
2 6
3 4
4 5
5 6
1 2 6

图中用虚线标出了最优划分方案,需要建造 个哨所。