import java.util.*;
import java.io.*;public class Main {
public static void main(String[] args) {
int m, n, s, a, b;
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
Map<Integer, ArrayList> map = new HashMap<Integer, ArrayList>(); m = scanner.nextInt();
for (int i = 0; i < m; i++) {
n = scanner.nextInt();
s = scanner.nextInt();
// 输入键值,构建图
for (int j = 0; j < n - 1; j++) {
a = scanner.nextInt();
b = scanner.nextInt(); if (!map.containsKey(a))
map.put(a, new ArrayList<Integer>(b)); if (map.containsKey(a))
map.get(a).add(b);
} // list用于保存键
list.clear();
list.addAll(map.keySet()); // 对图进行遍历
for (int k = 1; k <= n; k++) {
if (s == k) {
System.out.print(-1 + " ");
continue;
} for (int j = 0; j < map.size(); j++)
if (map.get(list.get(j)).contains(k)) {
System.out.print(list.get(j) + " ");
break;
}
}
System.out.println();
}
}
}
import java.io.*;public class Main {
public static void main(String[] args) {
int m, n, s, a, b;
Scanner scanner = new Scanner(System.in);
List<Integer> list = new ArrayList<Integer>();
Map<Integer, ArrayList> map = new HashMap<Integer, ArrayList>(); m = scanner.nextInt();
for (int i = 0; i < m; i++) {
n = scanner.nextInt();
s = scanner.nextInt();
// 输入键值,构建图
for (int j = 0; j < n - 1; j++) {
a = scanner.nextInt();
b = scanner.nextInt(); if (!map.containsKey(a))
map.put(a, new ArrayList<Integer>(b)); if (map.containsKey(a))
map.get(a).add(b);
} // list用于保存键
list.clear();
list.addAll(map.keySet()); // 对图进行遍历
for (int k = 1; k <= n; k++) {
if (s == k) {
System.out.print(-1 + " ");
continue;
} for (int j = 0; j < map.size(); j++)
if (map.get(list.get(j)).contains(k)) {
System.out.print(list.get(j) + " ");
break;
}
}
System.out.println();
}
}
}
有没有什么解决速度问题的优化,或者别的构造图的方法?
超时,坑爹啊,而且不太清楚是不是有别的什么错误