资源限制
内存限制:256.0MB C/C++时间限制:2.0s Java时间限制:6.0s Python时间限制:10.0s
问题描述
旅行家的日记是若干条形如“A B”的语句(其中A,B都为字符串,且长度均不超过50),举例来说,日记“bigtree river”就表示旅行家从bigtree到了river。为了保持新鲜感,每个地点旅行家只会去一次。所以旅行家的旅行路线是从某个地点出发,经过若干中间地点后在某个地点结束。但由于意外,旅行家把他的日记打乱了,现在需要你来帮他复原他的日记,找到他旅行的路线。
输入格式
输入文件第一行,一个整数N,表示旅行家的日记条数。
接下来N行,每行一条日记。
输出格式
输出旅行家旅行的路线,即输出N+1行,每行一个地名。
样例输入
4
106B 104A
105B 105A
104A 104B
105A 106B
样例输出
105B
105A
106B
104A
104B
数据规模和约定
对于30%的数据 N<=1000
对于70%的数据 N<=10000
对于100%的数据 N<=50000
地名有小写字母,大写字母和数字组成,且长度不超过20。
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
TreeMap treeMap=new TreeMap<>();
TreeMap treeMap1=new TreeMap<>();//用于寻找开头。
String key=scanner.next();
String value=scanner.next();
for(int i=0;i<n;i++) {
//System.out.println(key+" "+value);
treeMap1.put(value, key);
treeMap.put(key, value);
if(i==n-1)
break;
key=scanner.next();
value=scanner.next();
}
//System.out.println(treeMap.size());
/**
* 向前查询查到第一个地方
*/
while(treeMap1.containsKey(key)) {
key=(String)treeMap1.get(key);
}
System.out.println(key);
/**
* 向后查询:以第一个地方为头向后依次查询
*/
while(treeMap.containsKey(key)) {
System.out.println(treeMap.get(key));
key=(String) treeMap.get(key);
}
}
}