[백준 1068번] 트리

2017. 8. 21. 23:35알고리즘/백준

반응형






소스코드


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>
using namespace std;
 
int n, rm, tr[51][51= { 0, }, visit[51][51= { 0, }, root[51= {0,};
int q[10001], h = 0, t = 0, cnt=0;
 
void bfs() {
    while (h != t) {
        int cur = q[h++];
        int flag = 0;
        for (int i = 0; i < n; i++) {
            if (tr[cur][i] == 1 && visit[cur][i]==0) {
                flag = 1;
                visit[cur][i] = 1;
                q[t++= i;
            }
        }
        if (!flag && !root[cur]) {
            cnt++;
        }
    }
}
 
int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        int in;
        cin >> in;
        if (in == -1) {
            q[t++= i;
            root[i] = 1;
            continue;
        }
        tr[in][i] = 1;
    }
    cin >> rm;
    for (int i = 0; i < n; i++) {
        tr[rm][i] = 0;
        tr[i][rm] = 0;
    }
    bfs();
    cout << cnt << '\n';
    return 0;
}
cs


반응형

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

[백준 4963번] 섬의 개수  (0) 2017.08.27
[백준 1269번] 대칭 차집합  (0) 2017.08.23
[백준 2688번] 줄어들지 않아  (0) 2017.08.21
[백준 1890번] 점프  (0) 2017.08.15
[백준 4883번] 삼각 그래프  (0) 2017.08.15