출제
시간 제한2초메모리 제한512 MB
참가자와 문제의 관계가 주어질 때, 선택한 문제를 아는 참가자 수를 먼저 최대화하고 그다음 문제 집합의 크기를 최대화하는 문제를 고르는 과제이다.
문제
다가올 대회의 문제를 출제하려고 조직위원회가 이 대회의 숙련된 참가자 명을 초빙했다. 각 참가자는 몇몇 문제를 알고 있다. 참가자들은 문제 아이디어를 공유하는 것을 좋아하므로, 한 문제를 여러 참가자가 알 수도 있다. 아쉽게도 어떤 참가자가 대회에 출제된 문제 중 하나라도 알고 있으면, 그 참가자는 그 대회에 참가할 수 없다.
조직위원회는 대회의 규모를 중시하므로, 참가할 수 있는 사람이 최대한 많아지도록 문제를 고르려 한다. 이때 문제의 집합은 비어 있으면 안 되고, 가능한 한 문제도 많아야 한다.
조직위원회는 프로그래머가 아니라서 이런 방식으로 문제를 고르는 데 어려움을 겪고 있다. 그래서 여러분에게 도움을 요청한다.
입력
첫째 줄에 세 정수 , , 이 주어진다. (, ; ) 각각 참가자의 수, 문제의 수, 참가자와 그가 아는 문제의 쌍의 수이다.
다음 개의 줄에 각 참가자가 아는 문제가 주어진다. 각 줄에는 두 정수 와 가 주어진다. () 각각 참가자의 번호와 그가 아는 문제 하나의 번호이다. 한 참가자가 아는 각 문제는 정확히 한 번만 주어진다.
출력
첫째 줄에 두 수 와 를 출력한다. 이는 찾은 참가자의 수와 문제의 수이다. 참가자의 수를 먼저 최대화하고, 참가자의 수가 최대일 때 문제의 수를 최대화해야 한다.
둘째 줄에 고른 문제 집합에 포함된 개의 문제 번호를 출력한다. 모든 번호는 이하의 서로 다른 자연수여야 한다. 최적해가 여러 개면 아무거나 출력한다.
힌트
첫 번째 예제에서는 4번 문제도 한 사람만 알고 있으므로 선택할 수 있었다.
두 번째 예제에서는 4번과 5번 문제를 아무도 알지 못하므로, 이 둘을 선택하는 것이 가장 좋다.