#AC2141. John

John

题目描述

题意:

John有很多朋友住在不同的街,想去拜访每位朋友,同时希望走的路最短。因为道路很窄,John在一条路上不能往回走。

John希望从家出发,拜访完所有的朋友之后回到自己的家,且总路程最短。John意识到如果可以每条路径都走一次,然后返回起点,应该是最短的路径。写一个程序帮助John找到这样的路径。

他保证对于任意一个路口来说,都有至少一个能走到任意一个街道的方法。

John意识到这样的路径可能不存在,所以如果对于一个图来说,所求路径不存在的话他希望你输出“Round trip does not exist.”(不含引号)

但John又意识到这样的路径也许不只有一个,如果出现了多条路径,他希望你告诉他所经过街道序列字典序最小的那一个解。

一个测试点有多个测试,具体格式可看样例:

输入格式:

每行有两个整数,x,y(1<=x<=m,1<=y<=m,x!=y)如果对应的测试点输入完毕,则x==0,y==0。如果两者不为0,则再输入一个整数num表示对应街道的编号(1<=num<=n)

最后以一个只有0 0的测试点为输入文件的结尾(该测试点不需要输出)

给出的每条街连接两个路口,最多有n条街道(编号从1到n),m个路口(编号从1到m)。

输出格式:

每一行对应一个测试点,若相应测试点有解,则依次输出所有解中街道编码序列字典序最小的那一个。若无解,则输出“Round trip does not exist.”

样例输入:

1 2 1

2 3 2

3 1 6

1 2 5

2 3 3

3 1 4

0 0

1 2 1

2 3 2

1 3 3

2 4 4

0 0

0 0

样例输出:

1 2 3 5 4 6

Round trip does not exist.

数据范围:

1<=n<=1995,1<=m<=44

来源:鸣谢Michael_Bryant(209 id:lifanding)上传题面