기록하는 개발자

[백준][JAVA] 11725 : 트리의 부모 찾기 본문

Algorithm

[백준][JAVA] 11725 : 트리의 부모 찾기

밍맹030 2021. 7. 23. 17:41
728x90

https://www.acmicpc.net/problem/11725

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int i, j, n = Integer.parseInt(br.readLine());
        ArrayList<Integer>[] list = new ArrayList[n + 1];

        for (i = 1; i <= n; i++) list[i] = new ArrayList<Integer>();

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

        int[] parents = new int[n + 1];
        dfs(list, parents, n, 1, 0);
        
        for (j = 2; j <= n; j++)  
        	System.out.println(parents[j]);
    }

    private static void dfs(ArrayList<Integer>[]list,int[] parents,int n,int now,int pre){
        parents[now] = pre;
        for (int item : list[now])
            if (item != pre)
                dfs(list, parents, n, item, now);
    }
}

728x90