https://www.acmicpc.net/problem/11725
import java.io.*;
import java.util.*;
public class Main {
static int n;
static boolean[] vis;
static int[] parent;
static ArrayList<ArrayList<Integer>> tree = new ArrayList<>();
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
vis = new boolean [n+1];
parent = new int [n+1];
for(int i=0;i<=n;i++){
tree.add(new ArrayList<>());
}
for(int i=0;i<n-1;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
tree.get(a).add(b);
tree.get(b).add(a);
}
dfs(1);
for(int i=2;i<=n;i++){
System.out.println(parent[i]);
}
}
static void dfs(int s){
vis[s] = true;
for(int i : tree.get(s)){
if(!vis[i]){
dfs(i);
parent[i]=s;
}
}
}
}
10/22
import java.util.*;
import java.io.*;
public class Main {
static boolean[] vis;
static ArrayDeque<Integer> q = new ArrayDeque<>(); // 필요 없음
static ArrayList<ArrayList<Integer>> tree = new ArrayList<>();
static int[] parent;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i=0;i<=n;i++){
tree.add(new ArrayList<>());
}
parent = new int[n+1];
vis = new boolean[n+1];
for(int i=0;i<n-1;i++){
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
tree.get(a).add(b);
tree.get(b).add(a);
}
dfs(1);
for(int i=2;i<=n;i++){
System.out.println(parent[i]);
}
}
static void dfs(int s){
vis[s] = true;
for(int i : tree.get(s)){
if(!vis[i]){
dfs(i);
parent[i]=s;
}
}
}
}