녕의 학습 기록

백준_11725 트리의 부모 찾기 (트리, dfs) 본문

Algorithm/Algorithm 문제

백준_11725 트리의 부모 찾기 (트리, dfs)

kjyyjk 2024. 3. 5. 11:14

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class BJ_11725_트리의부모찾기 {

    static ArrayList<Integer>[] tree;
    static int[] parent;
    static boolean[] visited;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        tree = new ArrayList[n+1];
        parent = new int[n+1];
        visited = new boolean[n+1];

        int i;
        for (i=1; i<n+1; i++) {
            tree[i] = new ArrayList<>();
        }

        StringTokenizer st;
        int a, b;
        for (i=0; i<n-1; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            a = Integer.parseInt(st.nextToken());
            b = Integer.parseInt(st.nextToken());

            tree[a].add(b);
            tree[b].add(a);
        }

        dfs(1);

        StringBuilder sb = new StringBuilder();
        for (i=2; i<n+1; i++) {
            sb.append(parent[i]).append('\n');
        }

        System.out.println(sb);
    }

    static void dfs(int node) {
        visited[node] = true;

        for (int nextNode : tree[node]) {
            if (!visited[nextNode]) {
                parent[nextNode] = node;
                dfs(nextNode);
            }
        }
    }

}
 

11725번: 트리의 부모 찾기

루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.

www.acmicpc.net