그래프 트리 분할
시간 제한2초메모리 제한1024 MB
간선을 지워 그래프를 크기가 다른 두 개의 정점 서로소 트리로 나누고, 불가능하면 -1을 출력한다.
문제
정점 개, 간선 개의 그래프가 주어진다.
각 정점은 부터 까지 번호가 매겨져 있고, 간선도 입력되는 순서대로 부터 까지 번호가 매겨져 있다.
그래프에서 원하는 만큼 간선을 삭제해, 서로 다른 크기의 트리 2개로 분할해보자!
각각의 트리는 하나 이상의 정점을 가지고 있어야 하며, 두 트리가 동일한 정점이나 간선을 공유해서는 안 된다.
입력
첫 번째 줄에 정점의 개수 , 간선의 개수 이 주어진다. (, )
두 번째 줄부터 줄에 걸쳐서 간선을 나타내는 정수 와 가 주어진다. (, )
이는 번 정점과 번 정점을 잇는 양방향 간선이 존재함을 나타낸다. 중복 간선은 주어지지 않는다.
출력
그래프를 분할할 수 없다면 첫 번째 줄에 -1을 출력하고 종료한다.
분할할 수 있는 방법이 존재한다면, 아무거나 하나를 아래와 같은 형식으로 출력한다.
첫 번째 줄에 두 트리의 크기 를 출력한다. (과 는 서로 다른 양의 정수이고, 을 만족해야 한다.)
두 번째 줄에는 첫 번째 트리에 속한 정점 개의 번호를 출력한다.
세 번째 줄에는 첫 번째 트리에 속한 간선 개의 번호를 출력한다.
네 번째 줄에는 두 번째 트리에 속한 정점 개의 번호를 출력한다.
다섯 번째 줄에는 두 번째 트리에 속한 간선 개의 번호를 출력한다.
출력한 트리 각각은 연결 그래프이고, 동일한 정점이나 간선을 공유해서는 안 된다.
출력하는 모든 정점의 번호는 이상 이하를, 간선의 번호는 이상 이하를 만족해야 한다.