잘 쓴 코드는 주석과 설명이 필요 없다고 하지만 겸손하게 주석은 넣었다!


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
#include <iostream>
#include <vector>
using namespace std;
bool check[1001];
vector<vector<int>> lst(1001);
 
void dfs(int start)
{
    check[start] = true;
    for (int i = 0; i < lst[start].size(); ++i)
    {
        int v = lst[start][i];
        if (check[v] == false)
            dfs(v);
    }
    return;
}
int main()
{
    int vertex, edge;
    cin >> vertex >> edge;
    int input_1, input_2;
    //간선을 2차원 벡터에 저장
    for (int i = 0; i < edge; ++i)
    {
        cin >> input_1 >> input_2;
        lst[input_1].push_back(input_2);
    }
    int link_num = 0;
    for (int i = 1; i <= vertex; ++i)
    {
        //방문되지 않았다면 하나의 연결요소임으로 개수를 늘려준다. 
        if (check[i] == false)
        {
            //dfs로 방문할 수 있는 모든 정점을 방문한다.
            dfs(i);
            link_num++;
        }
    }
    //예상 복잡도 O(V(V+E))
    cout << link_num << endl;
    return 0;
}
cs


'백준 온라인 저지' 카테고리의 다른 글

2667번 : 단지번호붙이기  (0) 2018.07.16
백준 1707: 이분 그래프  (0) 2018.07.16
백준 1260: DFS와 BFS  (0) 2018.07.15
백준 1676: 팩토리얼 0의 개수  (0) 2018.07.13
백준 6588: 골드바흐의 추측  (0) 2018.07.13

+ Recent posts