만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리 동형

면접 대비

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

요약
정점 N개짜리 트리 두 개가 주어질 때, 첫 번째 트리의 정점 번호를 바꿔 두 번째 트리와 같은 모양으로 만들 수 있는지 판별하고, 가능하면 각 정점이 바뀔 번호를 출력합니다.
난이도

보통10점 중 5점

유형
트리, DFS, 해시맵
정답자
아직 제출이 없습니다

문제

미술 시간 과제는 번호가 매겨진 트리를 그리는 것이었다. 번호가 매겨진 트리를 그리려면 먼저 종이에 0…N−10 \ldots N-1의 정수를 적고, 그다음 일부 정수 쌍 사이에 N−1N-1개의 선을 그어 연결한다. 선은 어떤 정수에서 출발하든 선을 따라 다른 모든 정수에 도달할 수 있도록 그어야 한다.

두 학생이 정수 개수가 같은 트리를 그렸다. 선생님은 표절을 의심했다. 한 학생이 다른 학생의 트리를 베끼고 정수 일부만 바꾸고 선은 그대로 두었다고 생각한다.

NN개의 정수로 이루어진 두 트리가 주어졌을 때, 첫 번째 트리의 정수 일부를 바꿔서 두 번째 트리로 만들 수 있는지 판단하는 프로그램을 작성하라. 아무것도 바꾸지 않거나 모두 바꾸는 경우도 포함한다. 가능하다면 그 변경 내용도 출력해야 한다.

입력

첫 줄에 각 트리의 정수 개수 NN이 주어진다 (1≤N≤100 0001 \le N \le 100\,000). 이어지는 N−1N-1개 줄에는 두 정수 ss와 tt가 주어지며, 첫 번째 트리에서 정수 ss와 tt 사이에 선이 있다는 뜻이다 (0≤s<t<N0 \le s < t < N). 그다음 N−1N-1개 줄에는 두 정수 uu와 vv가 주어지며, 두 번째 트리에서 정수 uu와 vv 사이에 선이 있다는 뜻이다 (0≤u<v<N0 \le u < v < N).

출력

첫 번째 트리를 두 번째 트리로 바꿀 수 없으면 첫 줄에 EI를 출력한다. 바꿀 수 있으면 첫 줄에 JAH를 출력하고, 이어지는 NN개 줄에 정수 pip_i를 각각 출력한다. pip_i는 첫 번째 트리의 정수 ii를 pip_i로 바꿔야 한다는 뜻이다.

예제2

  1. 예제 1

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

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