새로운 섬
시간 제한1초메모리 제한128 MB
간선 i의 비용이 2^i인 그래프에서 연결성을 유지하고 모든 정점 쌍 거리가 원래의 두 배를 넘지 않도록 가장 저렴한 간선 집합을 제거한다.
문제
새로운 섬이 발견되었다. 건축가들이 이 섬의 주요 장소들을 잇는 도로 계획을 설계했지만, 예산이 부족하여 계획을 그대로 건설할 수 없다. 그래서 일부 도로를 없애 더 저렴한 계획으로 수정하려고 한다.
제안된 계획에서 각 도로는 이상 이하의 서로 다른 번호(id)를 가지며(는 도로의 수), 번호가 인 도로의 비용은 정확히 이다. 번호가 모두 다르므로 도로 비용은 서로 다른 의 거듭제곱이다.
모든 장소가 여전히 연결된 상태를 유지하면서, 남은 도로들의 총비용이 최소가 되도록 일부 도로를 제거하려고 한다. 다만 도로를 마음대로 제거할 수는 없다. 제거한 뒤의 계획에서 임의의 두 장소 사이의 거리는 원래 계획에서의 거리의 두 배를 넘어서는 안 된다. 두 장소 사이의 거리는 그 둘을 잇는 경로에 포함된 도로 수의 최솟값이다.
원래 도로 계획이 그래프로 주어진다. 거리 제약을 지키면서 남은 총비용을 최소로 만드는 제거 방법을 구하여라. 비용이 서로 다른 의 거듭제곱이므로 이러한 최적의 제거 방법은 유일하다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 ()과 가 주어지며, 각각 장소(정점)의 수와 도로(간선)의 수이다. 이어지는 개의 줄 중 번째 줄에는 두 정수 와 가 주어지고, 이는 번호가 인 도로가 장소 와 를 잇는다는 뜻이다(도로는 주어진 순서대로 번부터 번까지 번호가 매겨진다).
입력의 끝은 두 개의 으로 이루어진 줄로 표시된다.
출력
각 테스트 케이스마다 한 줄에 제거한 도로의 개수를 출력하고, 이어서 제거한 도로들의 번호를 증가하는 순서로 출력한다. 제거한 도로가 없으면 만 출력한다.