11724번-연결 요소의 개수
백준문제풀이/DFS

11724번-연결 요소의 개수

반응형

문제

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

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net


접근방법

1) 접근 사고

1.연결 요소의 개수를 구해주면 되기 때문에 방문한 노드 지점을 visited 배열을 사용해 체크해줍니다.

2. 방문한 지역은 visited를 사용해 제외해주었기 때문에 DFS 시도횟수의 의미가 전체 연결 개수의 의미를 의미하므로 DFS 시도 횟수를 출력해줍니다.

 

2) 시간 복잡도

O(V + E)

 

3) 실수

 

4) 배운점

 

5) PS

 


정답코드

#include <bits/stdc++.h>

using namespace std;

int n, m;
const int MAX = 1005;
vector<int> board[MAX];
bool visited[MAX];

void DFS(int cur){
    visited[cur] = true;
    for(auto next : board[cur]){
        if(!visited[next])
            DFS(next);
    }
}

int pro(){
    int count = 0;
    for(int i = 1; i <= n ; i++){
        if(!visited[i]){
            DFS(i);
            count++;
        }
    }
    return count;
}

void input(){
    cin >> n >> m;
    for(int i = 0; i < m; i++){
        int y, x;
        cin >> y >> x;
        board[y].push_back(x);
        board[x].push_back(y);
    }
}

int main(){
    input();
    cout << pro() << "\n";
}
반응형

'백준문제풀이 > DFS' 카테고리의 다른 글

11725번-트리의 부모 찾기  (0) 2022.04.15
2606번-양  (0) 2022.04.14
14888번-연산자 끼워넣기  (0) 2021.09.04