본문 바로가기
알고리즘/그래프

[백준 13023] ABCDE(Java)

by justkeepgoing 2020. 12. 22.
728x90
반응형

1. 문제

www.acmicpc.net/problem/13023

 

13023번: ABCDE

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

www.acmicpc.net

2. 풀이

3. 코드

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

public class Main {

    static int N, M;
    static ArrayList<Integer>[] map;
    static boolean[] visited;
    static int result;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        map = new ArrayList[N];
        visited = new boolean[N];
        for (int i = 0; i < N; i++) {
            map[i] = new ArrayList<>();
        }
        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            map[a].add(b);
            map[b].add(a);
        }
        for (int i = 0; i < N; i++) {
            if (result == 1) break;
            dfs(0, i);

        }
        System.out.println(result);
    }

    static void dfs(int depth, int start) {
        if(result==1) return;
        if (depth == 5) {
            result = 1;
            return;
        }
        for (int i = 0; i < map[start].size(); i++) {
            int next = map[start].get(i);
            if (!visited[next]) {
                visited[next] = true;
                dfs(depth + 1, next);
                visited[next] = false;
            }
        }
    }
}
반응형

 

반응형