Dev.baelanche

[백준 2644] 촌수계산 본문

Data Structure & Algorithm/PS - JAVA

[백준 2644] 촌수계산

baelanche 2019. 4. 16. 19:46
반응형

 

BFS 로 노드 a 에서 b 까지의 레벨을 구하는 문제이다. 너비 탐색 기법을 쓸 줄만 안다면 충분히 풀 수 있다.

 

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int arr[][] = new int[101][101];
        boolean visited[] = new boolean[101];
        Queue<Integer> q = new LinkedList<Integer>();
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        int m = sc.nextInt();
        while(m-->0) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            arr[x][y] = 1;
            arr[y][x] = 1;
        }
        
        q.offer(a);
        visited[a] = true;
        int level = 0;
        boolean eq = false;
        while(!q.isEmpty()) {
            int size = q.size();
            if(eq) break;
            for(int x=0; x<size; x++) {
                int curr = q.peek();
                q.poll();
                for(int i=1; i<n+1; i++) {
                    if(arr[curr][i] == 1 && !visited[i]) {
                        visited[i] = true;
                        q.offer(i);
                        if(i == b) {eq = true; break;}
                    }
                }
            }
            level++;
        }
        
        level = visited[b] == false ? -1 : level;
        System.out.println(level);
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 7562] 나이트의 이동  (0) 2019.04.16
[백준 2178] 미로 탐색  (0) 2019.04.16
[백준 2579] 계단 오르기  (0) 2019.04.15
[백준 1932] 정수 삼각형  (0) 2019.04.15
[백준 1149] RGB거리  (0) 2019.04.15
Comments