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

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

르블랑의 트리 순회

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

요약
트리가 주어졌을 때, 레블랑이 두 종류의 체크포인트를 써서 모든 간선을 정확히 한 번씩 방문할 수 있는지 판정합니다.
난이도

어려움10점 중 8점

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

문제

NN개의 정점으로 이루어진 트리가 있다. 르블랑은 이 트리를 순회하려고 한다.

임의의 정점에서 출발해 유한 번의 행동으로 모든 간선을 정확히 한 번씩 방문하는 과정을 "적절한 순회"라고 한다. 르블랑은 정점 위에 있을 때마다 다음 다섯 가지 행동 중 하나를 할 수 있다.

  1. 현재 정점에 인접한 간선 하나를 골라 방문하고, 간선을 따라 건너편 정점으로 이동한다.
  2. 트리에 노란색 체크포인트가 없을 경우, 현재 정점에 노란색 체크포인트를 생성한다.
  3. 트리에 노란색 체크포인트가 있을 경우, 노란색 체크포인트로 순간이동하고 노란색 체크포인트를 제거한다.
  4. 트리에 보라색 체크포인트가 없을 경우, 현재 정점에 보라색 체크포인트를 생성한다.
  5. 트리에 보라색 체크포인트가 있을 경우, 보라색 체크포인트로 순간이동하고 보라색 체크포인트를 제거한다.

위 그림들은 각각 예제 1과 예제 2의 적절한 순회 방법 중 하나이다.

처음에 트리에는 체크포인트가 없다.

르블랑이 시작 정점을 잘 고르고 최적으로 행동한다면 적절한 순회를 할 수 있는지 알아보자.

입력

첫째 줄에 정점의 개수 NN이 주어진다. (4≤N≤500,0004 \leq N \leq 500,000)

둘째 줄부터 N−1N-1개의 줄에 걸쳐 각 간선이 연결하는 두 정점의 번호 a,ba,b가 공백으로 구분되어 주어진다. (1≤a,b≤N, a≠b1 \leq a,b \leq N,\ a \neq b)

입력으로 주어지는 그래프는 트리이다.

출력

주어진 트리에서 르블랑이 시작 정점을 잘 고르고 최적으로 행동했을 때 적절한 순회가 가능하면 YES를, 불가능하면 NO를 출력한다.

예제3

  1. 예제 1

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

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

    입력
    22
    1 2
    2 3
    2 4
    3 5
    3 6
    4 7
    4 8
    1 9
    9 10
    9 11
    10 12
    10 13
    11 14
    11 15
    1 16
    16 17
    16 18
    17 19
    17 20
    18 21
    18 22
    
    예상 출력
    NO