만드는 중입니다

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

완전한 거울

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

요약
같은 깊이에 있는 정점의 차수가 모두 같아지도록 트리의 루트를 하나 고르고, 그런 루트가 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

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

문제

트리가 주어진다. 트리는 nn개의 정점으로 이루어져 있다. 아래 조건을 만족하는 루트 정점을 하나 고른다.

  • 임의의 두 정점 v1v_{1}, v2v_{2}에 대해 distance(root,v1)=distance(root,v2)distance(root, v_{1}) = distance(root, v_{2})이면 degree(v1)=degree(v2)degree(v_{1}) = degree(v_{2})이다. 여기서 degree(v)degree(v)는 정점 vv와 연결된 정점의 개수이고, distance(a,b)distance(a, b)는 두 정점 사이의 간선 수이다.

이 조건을 만족하는 루트 정점이 있는지 판단한다. 여러 개라면 그중 아무거나 하나를 찾는다.

입력

첫째 줄에 정점의 개수 nn (1≤n≤1051 \le n \le 10^{5})이 주어진다.

이후 n−1n-1개의 줄에 각각 정수 viv_{i}, uiu_{i} (1≤vi<ui≤n1 \le v_{i} < u_{i} \le n)가 주어진다. 이는 viv_{i}와 uiu_{i} 사이에 간선이 있다는 뜻이다. 주어지는 그래프는 트리이다.

출력

조건을 만족하는 루트 정점이 있으면 그중 하나의 번호를 출력한다. 없으면 −1-1을 출력한다.

힌트

첫 번째 입력의 그림이다. 1, 5, 7도 올바른 답이 될 수 있다.

두 번째 입력의 그림이다. 이 트리에서는 조건을 만족하는 루트 정점을 찾을 수 없다.

예제2

  1. 예제 1

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

    입력
    6
    1 3
    2 3
    3 4
    4 5
    4 6
    
    예상 출력
    -1