본문 바로가기

CodingTEST

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

반응형

백준 11725번 문제 -  트리의 부모 찾기

 

11725번: 트리의 부모 찾기

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

www.acmicpc.net


문제 분석 

 

 

  • 트리의 루트를 1이고, 노드끼리 연결 정보를 알려준다.
  • 각 노드의 부모를 구하는 프로그램을 작성하시오. 

 

해결 포인트

 

  • BFS 사용
  • 연결 정보를 저장
  • 1을 큐에 넣고 그들의 연결 정보를 알아낸다. 방문하지 않은 노드일 경우, 이 전 값을 해당 값의 부모로 저장

 

코드
import java.io.*;
import java.util.*;

public class Main {
    public static int [] result;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        ArrayList<Integer> [] nears = new ArrayList[N+1];
        for (int i = 1; i <= N; i++) {
            nears[i] = 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());

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

        result = new int[N+1];
        BFS(nears, N);

        for (int i = 2; i <= N; i++) {
            bw.write(result[i] + "\n");
        }

        bw.flush();
        bw.close();
    }
    public static void BFS(ArrayList<Integer> [] nears, int N) {
        Queue<Integer> queue = new LinkedList<>();
        boolean [] visit = new boolean[N+1];

        visit[1] = true;
        queue.add(1);

        while (!queue.isEmpty()) {
            int value = queue.poll();

            ArrayList<Integer> near = nears[value];

            for(int n : near) {
                if(!visit[n]) {
                    result[n] = value;
                    visit[n] = true;
                    queue.add(n);
                }
            }
        }

    }
}
반응형

'CodingTEST' 카테고리의 다른 글

[백준 16953] A → B (JAVA)  (0) 2024.01.14
[프로그래머스] 전화번호 목록 (JAVA)  (0) 2024.01.13
[백준 14500] 테트로미노(JAVA)  (1) 2024.01.06
[백준 9019] DSLR (JAVA)  (1) 2024.01.06
[백준 5430] AC (JAVA)  (1) 2024.01.06