트리의 부모와 깊이


답안 제출

Points: 9
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

N개의 정점으로 이루어진 트리가 주어진다. 트리의 루트 노드는 항상 1번 노드이다.

이때, 1번 노드를 루트로 하여 트리를 구성했을 때, 1번 노드부터 N번 노드까지 각 노드의 "부모 노드의 번호"와 "노드의 깊이(Depth)"를 구하는 프로그램을 작성하시오.

노드의 깊이란 루트 노드에서 해당 노드까지 도달하기 위해 거쳐야 하는 간선의 개수를 의미합니다. 루트 노드(1번)의 깊이는 0입니다.

입력

첫째 줄에 트리의 정점의 개수 N이 주어진다. (1 ≤ N ≤ 100,000)

다음 N-1개의 줄에는 트리의 연결 상태를 나타내는 두 정수 u와 v가 공백을 사이에 두고 주어진다.

이는 u번 노드와 v번 노드가 간선으로 연결되어 있음을 의미한다. (무방향 간선)

출력

출력은 총 N개의 줄로 이루어진다.

i번째 줄(1 ≤ i ≤ N)에는 i번 노드의 부모 노드 번호와 i번 노드의 깊이를 공백으로 구분하여 출력한다.

단, 루트 노드(1번 노드)는 부모가 없으므로 부모 번호 자리에 0을 출력한다.

제약 조건

  • 1 ≤ N ≤ 100,000
  • 1 ≤ u, v ≤ N, u ≠ v
  • 주어지는 그래프는 항상 올바른 트리 구조임이 보장된다.

예제 입력 1

6
1 2
1 3
2 4
2 5
4 6

예제 출력 1

0 0
1 1
1 1
2 2
2 2
4 3

코멘트

현재 작성된 코멘트가 없습니다.