[백준] 11725번*/ - 트리의 부모 찾기 (실버 2)

AI·2025년 10월 20일

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;
                }
            }
        
    }
}

0개의 댓글