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

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

내 사촌 오바마

시간 제한1초메모리 제한128 MB

요약
부모 링크로 이루어진 숲에서 A0에서 B0로 가는 조상 경로 중 어머니를 가장 적게 지나는 경로를 찾는다.
난이도

보통10점 중 6점

유형
그래프, DFS, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

버락 오바마가 미국 대통령으로 당선되었을 때, 네덜란드의 레이던(Leiden) 시는 그의 조상인 토머스 블로섬(Thomas Blossom)과 앤 엘드슨(Anne Eldson)이 1609년부터 1629년까지 이 도시에 살았다는 사실을 자랑스럽게 발표했다. 두 사람은 종교의 자유를 찾아 잉글랜드에서 네덜란드로 건너온 125명이 넘는 개신교도 가운데 일부였으며, 이들은 훗날 '필그림 파더스(Pilgrim Fathers)'로 불리게 되었다. 앞서 미국 대통령을 지낸 부시 부자(父子) 역시 바로 이 레이던 부부의 후손이다.

물론 레이던이 버락 오바마와 이런 인연을 맺은 것은 기쁜 일이지만, 이런 관계를 가진 도시가 세상에 레이던 하나뿐일 리는 없다. 모든 사람에게는 생물학적 부모가 둘 있고 한 세대가 대략 30년마다 바뀐다고 하면, 오바마에게는 17세기 초의 조상이 수천 명은 있을 것이다.

만약 오바마와 레이던의 인연이 전적으로 남성 혈통만을 따라 이어졌다면 훨씬 더 흥미로웠을 것이다. 그러나 실제로는 그렇지 않다. 오바마의 아버지는 케냐 출신이며, 토머스 블로섬과 앤 엘드슨으로 이어지는 계보는 오바마의 어머니 쪽에서 시작된다.

일반적으로 어떤 사람 A0A_0가 수 세기 전에 살았던 사람 B0B_0의 후손일 때, 두 사람을 잇는 조상 계보가 반드시 유일한 것은 아니다. 먼 친척끼리 서로 친척인 줄도 모르고 혼인하는 일이 있기 때문이다. 이런 경우, A0A_0에서 B0B_0로 이어지는 계보 가운데 여성이 가장 적게 포함된 계보를 찾는 것이 흥미로운 문제가 된다.

당신은 조상 정보 데이터베이스를 이용해 바로 이 계보를 찾아야 한다. 구체적으로는 A0A_0에서 B0B_0로 이어지는 한 조상 계보에 등장하는 여성의 최소 인원 수를 구해야 한다. 편의를 위해 데이터베이스에는 실제 이름 대신 각 개인을 11부터 어떤 최댓값 NN까지의 정수로 식별한다.

입력

입력의 첫 줄에는 정수 하나, 곧 뒤따르는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

  • 정수 NN이 적힌 한 줄. 2≤N≤100 0002 \le N \le 100\,000을 만족하며, 데이터베이스에 등록된 사람 수이다.
  • 서로 다른 두 정수 A0A_0와 B0B_0가 적힌 한 줄. 1≤A0,B0≤N1 \le A_0, B_0 \le N을 만족하며, 우리가 관심 있는 두 사람의 ID 번호이다.
  • NN개의 줄. 각 줄에는 두 정수 ff와 mm이 있으며 0≤f,m≤N0 \le f, m \le N을 만족한다. ii번째 줄의 두 정수는 ID 번호가 ii인 사람의 아버지(ff)와 어머니(mm)의 ID 번호이다. f=0f = 0(또는 m=0m = 0)은 그 사람의 아버지(또는 어머니)를 알 수 없음을 뜻한다.

같은 줄의 정수들은 하나의 공백으로 구분된다.

NN개 줄에 등장하는 아버지·어머니 정보는 성별이 일관된다. 즉, 어떤 사람도 아버지이자 동시에 어머니로 등록되지 않는다. 나이 제한은 없다. 예를 들어 열 세대 차이가 나는 남자와 여자가 함께 자식을 둘 수도 있다. 물론 조상 정보에는 순환이 존재하지 않는다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 데이터베이스상 B0B_0가 A0A_0의 조상이라면, A0A_0에서 B0B_0로 이어지는 한 조상 계보에 포함되는 여성의 최소 인원 수를 출력한다. 이때 A0A_0와 B0B_0 자신은 (둘 중 하나가 여성이더라도) 세지 않는다. 그렇지 않다면 문자열 no ancestor를 출력한다.

힌트

여기서 남성과 여성을 구분하는 것은 남성 혈통 또는 여성 혈통이라는 전통적인 관념과, 각 사람이 데이터베이스에서 아버지 또는 어머니 중 어떤 역할로 등장하는지에 따른 분류일 뿐이며, 어떤 불쾌감도 의도하지 않는다.

예제7

  1. 예제 1

    입력
    2
    23
    1 8
    2 0
    3 15
    9 4
    5 10
    11 6
    0 7
    8 0
    0 0
    0 0
    0 0
    12 14
    13 0
    0 0
    0 0
    16 23
    17 20
    0 18
    19 0
    12 7
    21 0
    22 0
    8 0
    0 0
    9
    2 9
    5 2
    3 4
    0 0
    0 0
    6 7
    0 0
    8 9
    0 0
    0 0
    
    예상 출력
    2
    no ancestor
    
  2. 예제 2

    입력
    1
    2
    1 2
    2 0
    0 0
    
    예상 출력
    0
    
  3. 예제 3

    입력
    1
    2
    1 2
    0 2
    0 0
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1
    3
    1 3
    2 0
    0 0
    0 0
    
    예상 출력
    no ancestor
    
  5. 예제 5

    입력
    1
    3
    1 3
    0 2
    3 0
    0 0
    
    예상 출력
    1
    
  6. 예제 6

    입력
    1
    4
    1 4
    2 3
    4 0
    4 0
    0 0
    
    예상 출력
    0
    
  7. 예제 7

    입력
    2
    2
    1 2
    2 0
    0 0
    3
    1 3
    0 2
    0 3
    0 0
    
    예상 출력
    0
    1