문제 링크
- http://icpc.me/15481
풀이
일단 주어진 그래프에서 MST를 구하는 것은 크루스칼 알고리즘을 이용해 O(E log E)만에 할 수 있습니다.
크루스칼 알고리즘은 Union-Find 구조를 이용합니다. (u, v)를 잇는 간선이 MST에 추가된다면 u가 있는 집합과 v가 있는 집합을 union해줍니다.
반대로, (u, v)를 잇는 간선이 제거된다면 두 집합이 분리가 되겠죠.
(u, v)를 포함하는 MST를 구하는 것은, 주어진 그래프의 MST에서 (u, v)를 잇는 경로 중 가장 비용이 큰 간선을 제거해준 다음에 (u, v)간선을 넣어주면 됩니다.
이 작업은 LCA와 Sparse Table을 이용해 처리해줄 수 있습니다.
전체 코드
1 |
|