넥슨의 한 게임에는 신규 유저의 게임 적응을 돕기 위한 멘토링 시스템이 있다.
이 멘토링 시스템에는 게임을 오래 플레이한 멘토가 명 등록되어있고, 새로 게임에 가입한 멘티 명이 등록되어 있어, 이들을 1:1 매칭시킨다. 편의상, 각 멘토는 부터 까지 번호가 매겨져 있고, 각 멘티 또한 부터 까지 번호가 매겨져 있다.
어떤 멘토와 어떤 멘티를 아무 이유 없이 매칭시켜주면 멘토링 시스템의 질이 떨어질 수 있기 때문에, 유저들의 접속 시간대, 플레이 스타일, 직업군 등 다양한 요소를 고려하여 멘토링이 가능한 멘토와 멘티 쌍이 결정되었다.
예를 들어, 인 상황을 보자.
멘토 을 멘티 과, 멘토 를 멘티 과, 멘토 을 멘티 와 매칭해줄 수 있다.
다른 방법 또한 가능한데, 멘토 을 멘티 과, 멘토 를 멘티 와, 멘토 을 멘티 과 매칭해줄 수도 있다. 즉, 1:1 매칭은 가능하지만 그 방법이 유일하지 않다.
인 다른 상황을 보자.
이 경우, 멘토 은 멘티 와만 멘토링이 가능하고, 멘토 또한 멘티 와만 멘토링이 가능하다. 즉, 1:1 매칭이 불가능하다.
마지막으로, 인 다른 상황을 보자.
멘토 은 멘티 와, 멘토 는 멘티 과, 멘토 은 멘티 과 매칭해줄 수 있다. 다른 방법으로는 매칭이 불가능하다. 즉, 1:1 매칭이 가능하며 그 방법이 유일하다.
멘토와 멘티의 수 과 멘토링이 가능한 멘토와 멘티 쌍이 주어졌을 때, 이들을 1:1 매칭시키는 것이 가능하며, 그 방법이 유일한지 구하는 프로그램을 작성하시오.
첫 줄에 멘토와 멘티의 수를 나타내는 정수 과 멘토링이 가능한 멘토와 멘티 쌍의 수를 나타내는 정수 이 공백으로 구분되어 주어진다. ()
이어지는 개의 줄에 멘토의 번호를 나타내는 정수 와 멘티의 번호를 나타내는 정수 가 공백으로 구분되어 주어진다. ()
이는 멘토 와 멘티 가 멘토링이 가능하다는 것을 의미한다. 같은 쌍이 여러 번 주어지지 않는다.
첫 줄에
명의 멘토와 명의 멘티를 1:1 매칭시키는 것이 가능하며, 그 방법이 유일하다면
YES
를 출력하고, 그렇지 않다면 NO
를 출력한다.
만약 답이 YES
라면, 이어지는 줄의 번째 줄에 멘토 와 매칭될 멘티의 번호 를 출력한다.
3 5 1 2 2 2 2 3 3 1 3 3
YES 2 3 1
3 5 1 3 2 1 2 2 3 1 3 2
NO
3 5 1 2 2 1 2 2 2 3 3 2
NO
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 19점
종류 2: 24점
종류 3: 28점
종류 4: 29점
추가적인 제한 조건이 없음.