유니온 파인드 나중에 꼭 복습해야 할 것 같다.


<코드>

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
#include <stdio.h>
 
int n, l, a, b, d[300001];
bool c[300001], g;
 
int f(int x) {
    return x == d[x] ? x : d[x] = f(d[x]);
}
 
void u(int x, int y) {
    x = f(x);
    y = f(y);
    if (x != y) d[y] = x;
}
 
int main() {
    scanf("%d%d"&n, &l);
    for (int i = 0; i <= l; i++) d[i] = i;
    for (int i = 1; i <= n; i++) {
        g = 1;
        scanf("%d%d"&a, &b);
        if (!c[a]) {
            c[a] = 1;
            u(f(b), f(a));
        }
        else if (!c[b]) {
            c[b] = 1;
            u(f(a), f(b));
        }
        else if (!c[f(a)]) {
            c[f(a)] = 1;
            u(f(b), f(a));
        }
        else if (!c[f(b)]) {
            c[f(b)] = 1;
            u(f(a), f(b));
        }
        else g = 0;
        printf(g ? "LADICA\n" : "SMECE\n");
    }
    return 0;
}
cs


'BOJ' 카테고리의 다른 글

3621 족보  (0) 2017.09.06
3780 네트워크 연결  (0) 2017.09.06
10775 공항  (0) 2017.09.06
1976 여행 가자  (0) 2017.09.06
4195 친구 네트워크  (0) 2017.09.06

+ Recent posts