코딩테스트/[JAVA] 백준

[백준 | JAVA | 24444번] 알고리즘 수업 - 너비 우선 탐색 1

냠냠쿠 2023. 12. 18. 07:26
728x90

 

 

 

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

 

 

 

📝 나의풀이

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int N = scanner.nextInt() ; //정점의 수
        int M = scanner.nextInt(); //간선의 수
        int R = scanner.nextInt(); //시작 정점
        
        
        ArrayList<Integer>[] arr = new ArrayList[N+1];
        
        for(int i=1; i<=N; i++) {
        	arr[i] = new ArrayList<>();
        }
        
        while (M-- >0) {
            int u = scanner.nextInt();
            int w = scanner.nextInt();
            arr[u].add(w);
            arr[w].add(u);
        }

        for (int i = 1; i <= N; i++) {
            Collections.sort(arr[i]);
        }

        int[] check = new int[N+1];
        Queue<Integer> q = new LinkedList<>();
        q.add(R);
        int depth = 1;
        check[R] = depth;
        while(!q.isEmpty()) {
            int x = q.poll();
            for (int i = 0; i < arr[x].size(); i++) {
                int h = arr[x].get(i);
                if (check[h] == 0) {
                    depth += 1;
                    check[h] = depth;
                    q.add(h);
                }
            }
        }

        for (int i = 1; i < check.length; i++) {
            System.out.println(check[i]);
        }
    }
}
 

 

728x90