[백준] P11725

동민·2021년 3월 11일
import java.util.ArrayList;
import java.util.Scanner;

public class P11725 {

	private static ArrayList<ArrayList<Integer>> list; // 이중배열을 사용하면 메모리 초과 발생; 리스트 사용
	private static boolean[] visit;
	private static int[] parent; // 부모노드를 저장 할 배열

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		list = new ArrayList<>();
		visit = new boolean[n + 1];
		parent = new int[n + 1];
		for (int i = 0; i < n + 1; i++) {
			list.add(new ArrayList<>());
		}

		for (int i = 1; i <= n - 1; i++) {
			int e1 = sc.nextInt(), e2 = sc.nextInt();
			list.get(e1).add(e2);
			list.get(e2).add(e1);
		}
		
		dfs(1, 0);

		for (int i = 2; i < parent.length; i++) {
			System.out.println(parent[i]);
		}
		sc.close();
	}

	private static void dfs(int current, int p) {
		parent[current] = p; // parent 배열에 현재 노드의 부모 노드를 저장
		visit[current] = true;
		for (int i = 0; i < list.get(current).size(); i++) {
			if (!visit[list.get(current).get(i)]) {
				dfs(list.get(current).get(i), current); // 여기서 파라미터 current(현재노드)는 다음 노드(list.get(current).get(i))의 부모노드가 된다.
			}
		}
	}
}
profile
BE Developer

0개의 댓글