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

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

친구

면접 대비

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

요약
각 학생이 친구 한 명을 가리켜 방향 순환이 만들어질 때, 두 학생이 같은 순환에 속하는지와 첫 학생에서 둘째까지의 정방향 거리를 각 질의마다 답한다.
난이도

보통10점 중 6점

유형
그래프, DFS, 구현, 해시맵
정답자
아직 제출이 없습니다

문제

어느 학교에서 학생들이 공부에는 너무 많은 시간을, 사교에는 너무 적은 시간을 쓴다고 판단하여, 모든 학생에게 친구를 한 명씩 지정해 주기로 했다.

친구 관계는 한 방향이다. 예를 들어 Janet이 Sarah의 친구로 지정되면 Janet은 Sarah에게 친근하게 대해야 하지만, Sarah가 그 마음을 똑같이 돌려줄 의무는 없다.

친구는 컴퓨터가 학생 번호를 이용해 지정하며, 모든 학생은 정확히 한 명의 친구를 배정받는다. 이 과정에서 때때로 친구 원(circle of friends) 이 생긴다. 예를 들어 Marc에게 Fred가, Fred에게 Lori가, Lori에게 Jean이, Jean에게 Marc이 배정되면 Marc, Fred, Lori, Jean 네 사람이 하나의 친구 원을 이룬다.

이러한 원 안에서 한 학생으로부터 다른 학생까지의 분리도(separation) 는, 앞 학생에서 시작해 뒤 학생에 도달하기까지 따라가야 하는 친구 관계의 단계 수에서 1을 뺀 값이다. 위 예에서 Marc의 분리도는 Fred까지 00, Lori까지 11, Jean까지 22, 그리고 다시 Marc까지 33이다. Marc으로 되돌아오려면 원을 한 바퀴 모두 돌아야 하기 때문이다.

컴퓨터의 친구 배정이 주어질 때, 질의로 주어지는 각 학생 쌍에 대해 두 학생이 같은 친구 원에 속하는지 판단하고, 그렇다면 앞 학생에서 뒤 학생까지의 분리도를 구하라.

입력

첫 줄에 학생 수를 나타내는 정수 nn (2≤n≤99992 \le n \le 9999)이 주어진다.

이어지는 nn개의 줄에는 각각 친구 배정 x yx\ y (1≤x≤99991 \le x \le 9999, 1≤y≤99991 \le y \le 9999, x≠yx \ne y)가 주어진다. 이는 학생 xx에게 학생 yy가 친구로 배정되었음을(즉 xx가 yy에게 친근하게 대해야 함을) 뜻한다. 모든 학생은 정확히 한 명의 친구를 배정받는다.

친구 배정 다음에는 하나 이상의 질의 줄이 이어지며, 각 줄에는 공백 하나로 구분된 두 학생 번호가 있다. 각 질의마다 두 학생이 같은 친구 원에 속하는지, 그렇다면 그 분리도가 얼마인지 판단해야 한다. 입력은 0 0으로만 이루어진 줄로 끝나며, 이 줄은 질의가 아니다.

출력

각 질의마다 한 줄에 결과를 출력한다. 두 학생이 같은 친구 원에 속하지 않으면 No를, 속하면 Yes 뒤에 공백 하나와 앞 학생에서 뒤 학생까지의 분리도를 출력한다.

예제1

  1. 예제 1

    입력
    6
    1 2
    2 3
    3 1
    10 11
    100 10
    11 100
    1 100
    2 3
    0 0
    
    예상 출력
    No
    Yes 0