BOJ 8632 Byteland
BOJ 8632 Byteland
문제 내용
정점 개, 간선 개인 무방향 그래프가 주어집니다. 각각의 간선에 대해, 그 간선이 적어도 하나의 최소 스패닝 트리에 포함되는지 판별하세요.
입력
첫 줄에는 정점의 개수 과 간선의 개수 이 주어집니다. (, )
다음 줄에는 각 간선의 양 끝점의 번호 , 와 그 간선의 가중치 가 주어집니다. (, ) 의 범위에 주의하세요.
출력
에 대해 번째 줄에 입력의 번째 간선이 적어도 하나의 스패닝 트리에 포함된다면 TAK, 아니라면 NIE를 출력합니다.
문제 풀이
스포일러
Kruskal 알고리즘을 응용할 수 있습니다. 각 단계에서 서로 가중치가 로 같은 간선이 여러 개라면 이들 중에서 아무 순서로 선택할 수 있습니다. 따라서, union-find에서 이미 같은 집합에 들어있는 두 정점을 연결하는 간선을 제외하고 모든 간선은 MST에 포함시킬 수 있습니다.
또한, 가중치가 인 모든 간선을 처리한 이후에 union-find 집합의 상태는 간선을 추가하는 순서와 관계없음을 보일 수 있습니다. 따라서 가중치가 증가하는 순으로 위의 방법으로 처리해서 정답을 구할 수 있습니다.
Last updated on