만드는 중입니다

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

떠오르는 트리

시간 제한3초메모리 제한512 MB

요약
뿌리가 있는 트리의 간선이 하나씩 추가될 때, 모든 시점에서 도달 가능한 정점들의 번호가 연속 구간이 되도록 순열을 찾습니다. 그런 순열이 없으면 No를 출력합니다.
난이도

보통10점 중 7점

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

문제

정점 집합 V={1,…,n}V = \{1, \ldots, n\}과 방향이 있는 간선의 수열 e1,…,en−1e_1, \ldots, e_{n-1}이 주어진다. G0G_0은 간선이 없는 그래프이고, i=1,…,n−1i = 1, \ldots, n-1에 대해 GiG_i는 Gi−1G_{i-1}에 간선 eie_i를 추가한 그래프이다. 모든 간선을 추가한 Gn−1G_{n-1}은 루트에서 모든 간선이 바깥쪽을 향하는 루트 있는 트리임이 보장된다.

{1,…,n}\{1, \ldots, n\}의 적절한 순열 p1,…,pnp_1, \ldots, p_n을 찾아라. Si(v)S_i(v)는 GiG_i에서 vv로부터 도달할 수 있는 정점 uu들에 대한 pup_u 값의 집합이다. 모든 i∈{0,…,n−1}i \in \{0, \ldots, n-1\}과 모든 v∈Vv \in V에 대해 Si(v)S_i(v)가 {l,l+1,…,r}\{l, l+1, \ldots, r\} 꼴의 연속된 정수 집합이면 순열 p1,…,pnp_1, \ldots, p_n이 적절하다고 한다.

입력

첫 줄에 정수 nn (2≤n≤1062 \le n \le 10^6)이 주어진다. 다음 n−1n-1개의 줄에는 간선 eie_i의 시작 정점 uiu_i와 도착 정점 viv_i가 주어진다 (1≤ui,vi≤n1 \le u_i, v_i \le n). n−1n-1개의 간선을 모두 추가하면 모든 간선이 루트에서 바깥쪽을 향하는 루트 있는 트리가 됨이 보장된다.

출력

적절한 순열이 없으면 "No"를 한 줄에 출력한다. 있으면 첫 줄에 "Yes"를 출력하고, 둘째 줄에 적절한 순열 p1,…,pnp_1, \ldots, p_n을 나타내는 정수 nn개를 출력한다. 답이 여러 개라면 그중 아무거나 출력해도 된다.

예제2

  1. 예제 1

    입력
    4
    3 1
    1 4
    1 2
    
    예상 출력
    Yes
    3 1 4 2
    
  2. 예제 2

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