시리얼 2
시간 제한1초메모리 제한1024 MB
소들이 좋아하는 두 시리얼을 간선으로 본 그래프에서 서로 다른 시리얼 상자에 최대한 많은 소를 배정하는 순서를 구해 굶는 소의 수를 최소화합니다.
문제
Farmer John의 소들은 아침으로 시리얼을 먹는 것을 가장 좋아한다. 소들은 식욕이 커서 한 끼에 시리얼 한 상자를 통째로 먹는다.
농장에 종류의 시리얼이 배송되었다 . 각 종류의 시리얼은 상자가 하나뿐이다. 마리의 소 는 각자 가장 좋아하는 시리얼과 두 번째로 좋아하는 시리얼이 있다. 시리얼을 고를 기회가 주어지면 소는 다음과 같이 행동한다.
- 가장 좋아하는 시리얼의 상자가 남아 있으면 그것을 가져가고 떠난다.
- 그렇지 않고 두 번째로 좋아하는 시리얼의 상자가 남아 있으면 그것을 가져가고 떠난다.
- 그렇지도 않으면 실망하여 음매 하고 울며 시리얼을 가져가지 않고 떠난다.
소들의 순서를 최적으로 정했을 때 굶는 소의 최소 수를 구하라. 또한 그 최소 수를 달성하는 마리 소의 순열을 하나 구하라.
입력
첫째 줄에 공백으로 구분된 두 정수 과 이 주어진다.
에 대해 번째 줄에는 번째 소가 가장 좋아하는 시리얼과 두 번째로 좋아하는 시리얼을 나타내는 두 정수 와 가 공백으로 구분되어 주어진다. (이고 )
출력
굶는 소의 최소 수를 출력하고, 이어서 그 최소 수를 달성하는 의 순열을 출력한다. 최소 수를 달성하는 순열이 여러 개라면 그중 아무거나 출력해도 된다.
힌트
이 경우에는 소 마리와 시리얼 종류가 있다.
처음 세 소는 가장 좋아하는 시리얼이 서로 겹치지 않으므로 마지막 다섯 소와 독립적으로 풀 수 있다.
처음 세 소가 [1,2,3] 순서로 고르면 소 은 시리얼 를, 소 는 시리얼 을 고르고 소 은 굶는다.
처음 세 소가 [1,3,2] 순서로 고르면 소 은 시리얼 를, 소 은 시리얼 을, 소 는 시리얼 를 고르므로 세 소 모두 굶지 않는다.
물론 처음 세 소가 모두 굶지 않는 다른 순열도 있다. 예를 들어 [3,1,2] 순서로 고르면 소 은 시리얼 를, 소 은 시리얼 을, 소 는 시리얼 을 고르므로 소 [1,2,3]은 모두 굶지 않는다.
마지막 다섯 소 중에서는 적어도 한 마리가 반드시 굶어야 함을 보일 수 있다.