아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

러브 폴리곤

시간 제한2초메모리 제한1024 MB

요약
N명의 인물이 각각 한 명을 사랑할 때, 사랑하는 대상을 최소한으로 바꿔 모든 인물이 서로 사랑하는 짝을 이루도록 만든다.
난이도

어려움10점 중 8점

유형
그래프, 그리디, DFS, 조합론
정답자
아직 제출이 없습니다

문제

드라마에는 NN명의 등장인물이 있다. 각 등장인물은 자기 자신을 포함해 정확히 한 사람을 사랑한다. 두 등장인물은 서로를 사랑할 때, 그때만 커플이라고 한다. 세 명 이상이 첫 번째가 두 번째를, 두 번째가 세 번째를 사랑하는 식으로 이어지고 마지막이 첫 번째를 사랑하면 러브 폴리곤이라고 한다.

사랑의 화살을 쏘면 그 등장인물이 사랑하는 대상을 원하는 누구로든 바꿀 수 있다. 모든 등장인물이 커플에 속하도록 만드는 데 필요한 사랑의 화살의 최소 개수를 구하라. 커플은 서로 다른 두 사람이 서로 사랑하는 관계이므로, NN이 홀수이면 모든 사람을 커플로 만들 수 없다.

입력

첫째 줄에 등장인물의 수 NN이 주어진다. 다음 NN개의 줄에는 이름 ss와 tt가 공백으로 구분되어 주어진다. 이는 ss라는 등장인물이 처음에 tt를 사랑한다는 뜻이다. NN명의 서로 다른 등장인물이 ss 자리에 각각 한 번씩 등장한다. 이름은 소문자로만 이루어져 있으며 길이가 최대 10이다.

출력

모든 등장인물이 커플에 속하도록 만드는 데 필요한 사랑의 화살의 최소 개수를 출력한다. 어떻게 바꾸어도 모든 사람을 커플로 만들 수 없으면 -1을 출력한다.

힌트

자기 자신을 사랑하는 것은 커플이 아니다. 커플이 되려면 서로 다른 두 사람이 서로를 사랑해야 한다. 사랑의 화살을 맞지 않은 등장인물은 처음 사랑하던 대상을 그대로 사랑한다.

예제3

  1. 예제 1

    입력
    8
    leonard emmy
    ada emmy
    isaac leonard
    emmy pierre
    pierre bernhard
    bernhard emmy
    sofia karl
    karl sofia
    
    예상 출력
    3
    
  2. 예제 2

    입력
    4
    a c
    b c
    c d
    d d
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3
    rocky scarlet
    scarlet patrick
    patrick rocky
    
    예상 출력
    -1