문제 링크
- http://icpc.me/13306
문제 출처
- 2016 KOI 전국 본선 중등부3
사용 알고리즘
- Union-Find
시간복잡도
- O(Q * a(N))
풀이
정점이 n개인 트리에서 간선 n-1개를 제거한다는 것은 모든 정점을 따로 놓겠다는 의미입니다.
그러면, 간선을 제거해서 정점을 분리하는 것 대신 쿼리를 역으로 받아서 붙여주는 동작을 통해 구현할 수 있습니다.
정점들을 붙여주는 행위는 정점들을 그룹으로 묶는 것을 의미하기 때문에 Union-Find를 이용해 쉽게 구현할 수 있습니다.
Union by Rank와 Path Compression을 이용해 Union-Find의 시간 복잡도를 최적화해주면 주어진 시간 이내에 해결할 수 있습니다.
전체 코드
1 |
|