#TIMUS1096. 获取正确的路线牌!
获取正确的路线牌!
所有坐过叶卡捷琳堡公交车的人可能都注意到,印有路线编号的牌子另一面,还印着另一条路线的编号。
一天,一位新公交车的司机来到仓库,却发现没有印有他所分配路线编号的牌子。仓库管理员只好给了他一个随机的牌子,并建议他用这个牌子和其他公交车的司机交换。
只要对方的牌子上有自己的路线编号,任何司机都会同意交换牌子。请帮助这位新司机找到最短的交换序列,让他最终能得到印有自己路线编号的牌子。
输入
第一行包含一个整数,表示除新公交车外当前运行的公交车数量()。
接下来行,每行包含对应公交车的路线编号及其牌子另一面的编号。路线编号均为到之间的整数。
输入的最后一行包含三个整数、和,分别表示新司机的路线编号以及仓库管理员给的牌子两面的编号(,且、)。
输出
如果无法通过一系列交换得到所需的路线编号牌子,输出“IMPOSSIBLE”。
否则,第一行输出最少需要的交换次数(),随后行依次输出需要交换牌子的公交车编号(注意:是公交车编号,不是路线编号!)。公交车编号从到,与输入中给出的顺序一致。如果存在多个最优解,输出任意一个即可。
样例
输入
4
8 5
5 4
7 4
1 5
4 1 8
2
4
2
题目信息
- 题目作者:Stanislav Vasilyev
- 题目来源:美国犹他州立大学公开大学生程序设计竞赛 2001年3月 高级组(USU Open Collegiate Programming Contest March'2001 Senior Session)
- 标签:图论(graph theory)(未解决题目隐藏标签)
- 难度: