사이클 게임 20040

LJM·2023년 7월 9일
0

백준풀기

목록 보기
167/259

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

BFS로 풀어보려 했으나 막혀서 검색해봄.

유니온파인드를 사용하면 쉽게 해결된다...

import java.io.*;
import java.util.*;
public class Main {

    static int[] parent;
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");

        int N = Integer.parseInt(input[0]);//3 ~ 500000
        int M = Integer.parseInt(input[1]);//3 ~ 1000000

        parent = new int[N];
        for(int i = 0; i < N; i++) parent[i] = i;

        int answer = 0;
        for (int i = 1; i <= M; i++) {
            input = br.readLine().split(" ");

            int a = Integer.parseInt(input[0]);
            int b = Integer.parseInt(input[1]);

            if(find(a) == find(b)){
                answer = i;
                break;
            }

            union(a, b);
        }

        System.out.println(answer);
    }

    public static int find(int num){
        if(parent[num] == num)
            return num;
        else
            return parent[num] = find(parent[num]);
    }

    public static void union(int a, int b){
        a = find(a);
        b = find(b);
        if(a != b) parent[b] = a;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글