Devlog
#include <iostream>
using namespace std;
 
int v, e;
const int MAX = 101;
int V[MAX][MAX] = { 0, };
bool checked[MAX] = { 0, };
int count = 0;
 
void DFS(int x) {
    checked[x] = true;
    count++;
 
    for (int i = 1; i <= v; i++) {
        if (checked[i] == 0 && V[x][i] == 1) {
            DFS(i);
        }
    }
}
 
int main() {
    cin >> v >> e;
    for (int i = 0; i < e; i++) {
        int n, m;
        cin >> n >> m;
        V[n][m] = 1;
        V[m][n] = 1;
    }
 
    DFS(1);
    
    cout << count - 1;
}

DFS를 이용하여 문제를 품

checked[x] = true로 현재 방문한 노드(x)를 표시하고

for문을 통해 1부터 n대의 컴퓨터에 대해 i번째 컴퓨터를 방문 했는지(checked[i] ==0)와 현재 노드(x)와 i번째의 컴퓨터가 연결되어 있는지 V[i][x] == 1)를 확인하고 i의 dfs를 호출

'스터디 > 알고리즘' 카테고리의 다른 글

[백준 5212] 지구 온난화  (0) 2022.01.13
[백준 2164] 카드2  (0) 2022.01.10
[백준 22864] 피로도  (0) 2022.01.10
[백준 20436] ZOAC 3  (0) 2022.01.10
[백준 1158] 요세푸스 문제  (0) 2022.01.06
profile

Devlog

@덩이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그