목차

방 청소

ps
링크acmicpc.net/…
출처BOJ
문제 번호9938
문제명방 청소
레벨플래티넘 3
분류

Disjoint set

시간복잡도O(m*α(n))
인풋사이즈n<=300,000, m<=300,000
사용한 언어Python
제출기록88244KB / 984ms
최고기록740ms
해결날짜2022/06/25

풀이

코드

"""Solution code for "BOJ 9938. 방 청소".

- Problem link: https://www.acmicpc.net/problem/9938
- Solution link: http://www.teferi.net/ps/problems/boj/9938

Tags: [Disjoint set]
"""

import sys
from teflib import disjointset


def main():
    N, L = [int(x) for x in sys.stdin.readline().split()]
    A_and_B = [[int(x) for x in sys.stdin.readline().split()] for _ in range(N)]

    dsu = disjointset.DisjointSet(L)
    empty_drawer = [1] * L
    for a_i, b_i in A_and_B:
        a_set, b_set = dsu.find(a_i - 1), dsu.find(b_i - 1)
        if a_set != b_set:
            merged_set = dsu.union(a_set, b_set)
            empty_drawer[merged_set] = empty_drawer[a_set] + empty_drawer[b_set]
        else:
            merged_set = a_set
        if empty_drawer[merged_set] == 0:
            print('SMECE')
        else:
            empty_drawer[merged_set] -= 1
            print('LADICA')


if __name__ == '__main__':
    main()