알고리즘/백준

2644_촌수계산

베리영young 2024. 1. 23. 14:55

사용 알고리즘: bfs

사용 언어: java

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.Buffer;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main_bj_2644_촌수계산 {
    static int allPeople, a, b;
    static int result;
    static ArrayList<Integer>[] al ;
    static boolean[] visited;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        allPeople = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());
        a = Integer.parseInt(st.nextToken())-1;
        b = Integer.parseInt(st.nextToken())-1;
        al = new ArrayList[allPeople];
        for (int i = 0; i < al.length; i++) {
            al[i] = new ArrayList<Integer>();
        }
        int m = Integer.parseInt(br.readLine());
        for (int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine());
            int a1 = Integer.parseInt(st.nextToken())-1;
            int b1 = Integer.parseInt(st.nextToken())-1;
            al[a1].add(b1);
            al[b1].add(a1);
        }
//        result = allPeople*allPeople;

        visited = new boolean[allPeople];
        visited[a] = true;
        bfs(a);

        System.out.println(result);
    }

    private static void bfs(int a) {
        Queue<int[]> q = new ArrayDeque<>();
        q.offer(new int[] {a, 0}); //시작점, 촌수

        while (!q.isEmpty()) {
            int[] p = q.poll();
            //p[o] : 시작점, p[1] = 카운트

            if(p[0] == b){
                result = p[1];
                return;
            }

            for (int cur : al[p[0]]) {
                if(visited[cur]) continue;
                q.offer(new int[] {cur,p[1]+1});
                visited[cur] = true;
            }
        }

        result = -1;
    }
}

 

이슈:

잡고 들어올리기!!!!!!

 

static에서 ArrayList<타입>[] al;

 

 

'알고리즘 > 백준' 카테고리의 다른 글

11559_Puyo Puyo 뿌요뿌요 - 원샷원킬~  (2) 2024.03.05
2468_안전 영역  (1) 2024.01.24
5567_결혼식 **  (0) 2024.01.21
1920_수 찾기 **  (0) 2024.01.21
2583_영역 구하기 **  (0) 2024.01.19