Algorithm/BAEKJOON

[Java] 13023 ABCDE

곽수진 2023. 5. 1. 05:28
반응형

문제

BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다.

오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다.

  • A는 B와 친구다.
  • B는 C와 친구다.
  • C는 D와 친구다.
  • D는 E와 친구다.

위와 같은 친구 관계가 존재하는지 안하는지 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다.

둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 번 이상 주어지는 경우는 없다.

 

출력

문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.

 

import java.util.*;
import java.io.*;

public class Main{
    
    static boolean visited[];
    static ArrayList<Integer>[] arr;
    static boolean arrive;
    
    public static void main(String[] args){
        int nodeNum;
        int edgeNum;
        arrive = false;
        Scanner scanner = new Scanner(System.in);
        nodeNum = scanner.nextInt();
        edgeNum = scanner.nextInt();
        arr = new ArrayList[nodeNum];
        visited = new boolean[nodeNum];
        
        for(int i=0; i<nodeNum; i++){
            arr[i] = new ArrayList<Integer>();
        }
        
        for(int i=0; i<edgeNum; i++){
            int start = scanner.nextInt();
            int end = scanner.nextInt();
            arr[start].add(end);
            arr[end].add(start);
        }
        
        for(int i=0; i<nodeNum; i++){
            DFS(i, 1);
            if(arrive)
                break;
        }
        if(arrive)
            System.out.println("1");
        else
            System.out.println("0");
    }
    
    public static void DFS(int now, int depth){
        if(depth == 5 || arrive){
            arrive = true;
            return;
        }
        visited[now] = true;
        
        for(int i : arr[now]){
            if(!visited[i]){
                DFS(i, depth + 1);
            }
        }
        visited[now] = false;
    }
}
반응형

'Algorithm > BAEKJOON' 카테고리의 다른 글

[Java] 1260 DFS와 BFS  (0) 2023.05.16
[Java] 2023 신기한 소수  (0) 2023.04.30
[Java] 11724 연결 요소의 개수  (2) 2023.04.29
[Java] 10989 수 정렬하기 3  (0) 2023.04.28
[Java] 2751 수 정렬하기 2  (0) 2023.04.27