[BOJ] 11724. 연결 요소의 개수(그래프)

Feb 12, 2019


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

인접리스트와 DFS를 사용하여 문제를 해결했습니다.

#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector <int> v[1001];
bool check[1001];
int m;
void dfs(int node) {
    check[node] = true;
    for (int i = 0; i < v[node].size(); i++) {
        int next = v[node][i];
        if (check[next] == false) {
        //불필요한 연산을 생략 함으로써 메모리 낭비를 막는다.
            dfs(next);
        }
    }
}
int main() {
    int n, a, b, result = 0;
    scanf("%d %d", &n, &m);
    for (int i = 0; i < m; i++) {
        scanf("%d %d", &a, &b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    for (int i = 1; i <= n; i++) {
        if (check[i] == false) {
            dfs(i);
            result++;
        }
    }
    printf("%d\n", result);
}
  • 혼잣말