Accept: 113 Submit: 523
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
一天Bob收到一封信。Bob知道瓦罗兰大陆的邮局从A城市送信到B城市,乐意使用从A城市到B城市的邮票(A, B),或者使用从B城市到A城市的邮票(A, B),但是由于瓦罗兰大陆的城市繁多,所以并不是所有城市之间都能直接发送接收信件,换句话说,某两个城市想要通行邮件必须经过其他城市才行,但是邮局发送一次邮件的路途中从不会通过一座城市两次。
现在在Bob的信封上有N个邮票,Bob想知道这封信件是如何周转到达他手中的。
Input
题目有多组数据。
每组数据第一行包含一个整数,N ( 2 <= N <= 1e5),代表信件上的N封邮票。
接下有N行数据。第 i 行数据包含两个整数 ui,vi,代表从城市ui发送到城市vi的邮票,ui代表城市的编号,每个城市的编号互不相同,(ui != vi ,1 <= ui, vi <= 1e9)。
输入数据保证有解。
Output
每组样例的结果输出为一行, 每行包括N+1个被空格隔开的整数,代表着信件依次经过的城市编号。
若有多组可行答案,输出字典序最小的那组答案。
Sample Input
Sample Output
题解:从题目描述的可以得出解题的重要结论,这是一条链,没有其他的多余节点。我稍后解释。如下图
那么是如何得出这个结论呢?它保证是一个连通图,只有n-1条边,那么联通n个点的最少边是n-1,根据他是联通图有只有n-1条边,只会是上图的样子,那么问题就简单了,可以直接找到起点和终点,那个字典序小就从那个点输出,那么怎么找到起点呢?很明显他的出度是等于1的就是起点或者终点,直接压到vector里判断一下size==1?即可,这里问题又来了,他的点的编号大小最大是1e9,我们需要先离散化一下,在构图。这里我们直接DFS在图上跑就ok了
代码略。。。。。。。。。。。。。FZU OJ把我代码吞了。。。