본문 바로가기
알고리즘/백준

[JAVA]백준_2644_촌수계산

by 박 현 황 2021. 6. 26.

문제링크

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

 

2644번: 촌수계산

사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어

www.acmicpc.net

 

 

 

package BOJ;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main_2644 {
    static int N,M;
    static ArrayList<ArrayList<Integer>> list;
    static boolean isVisited[];
    static int person1,person2;
    static int size = -1;
    static boolean isFind;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        N = Integer.parseInt(br.readLine());

        //촌수를 계산해야하는 서로 다른 두 사람의 번호
        st = new StringTokenizer(br.readLine());
        person1 = Integer.parseInt(st.nextToken());
        person2 = Integer.parseInt(st.nextToken());

        list = new ArrayList<>();
        isVisited = new boolean[N+1];

        M = Integer.parseInt(br.readLine()); //부모자식들 간의 관계의 개수

        for(int i=0;i<=N;i++) list.add(new ArrayList<>());

        for(int m=0;m<M;m++){
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken()); //y의 부모
            int y = Integer.parseInt(st.nextToken());

            list.get(x).add(y);
            list.get(y).add(x);
        }

        dfs(person1,0);
        System.out.println(size);

    }

    private static void dfs(int person,int cnt) {
        isVisited[person] = true;

        for(Integer c : list.get(person)){
            if(!isVisited[c]){
                if(c == person2){
                    size = cnt+1;
                    return;
                }

                dfs(c,cnt+1);
            }
        }

    }
}

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

[JAVA]백준_9012_괄호  (0) 2021.07.19
[JAVA]백준_14722_우유도시  (0) 2021.07.18
[JAVA]백준_2583_영역구하기  (0) 2021.06.26
[JAVA]백준_2750_수 정렬하기  (0) 2021.06.24
[JAVA]백준_10773_제로  (0) 2021.06.24