알고리즘/백준

[백준 13023] ABCDE C++

겜도리도리 2021. 10. 2. 23:36
반응형

문제

백준 13023 ABCDE C++

 

13023번: ABCDE

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

www.acmicpc.net

풀이

깊이가 4이상인 노드가 있는지 확인하는 문제입니다.

각각의 노드에서 DFS를 실행하여 깊이가 4가 이상이 되는지 확인합니다.

소스 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <vector>
using namespace std;
 
vector<int> v[2000];
bool visited[2000];
bool ispossible;
 
void dfs(int node, int depth) {
    if (depth == 4) {
        // 깊이가 4가 되면 ABCDE를 만족한다.
        ispossible = true;
        return;
    }
    visited[node] = true;
    // DFS
    for (int i = 0; i < v[node].size(); i++) {
        int next = v[node][i];
        if (!visited[next] && !ispossible) {
            dfs(next, depth + 1);
        }
    }
    visited[node] = false;
}
 
int N, M;
int main() {
    cin >> N >> M;
    // 그래프 처리
    for (int i = 0; i < M; i++) {
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    for (int i = 0; i < N; i++) {
        dfs(i, 0);
        if (ispossible) {
            break;
        }
    }
    cout << ispossible;
    return 0;
}
cs
반응형

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

[백준 2660] 회장뽑기 C++  (0) 2021.10.05
[백준 5582] 공통 부분 문자열 C++  (0) 2021.10.03
[백준 1038] 감소하는 수 C++  (0) 2021.10.01
[백준 6593] 상범 빌딩 C++  (0) 2021.10.01
[백준 17471] 게리맨더링 C++  (0) 2021.09.29