만드는 중입니다

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

트리 부수기

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

요약
트리에서 노드 x의 간선을 모두 지웠을 때 0번 노드와 각 노드의 연결 여부를 이진수로 나타내고, 그 값들의 XOR을 구합니다.
난이도

보통10점 중 5점

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

문제

00번부터 N−1N-1번까지 NN개의 노드를 가진 트리가 주어진다. 두 노드 uu와 vv에 대하여 c(u,v)c(u,v)를 다음과 같이 정의하자.

uu번 노드와 연결된 모든 간선을 제거한 뒤에도 00번 노드와 vv번 노드를 잇는 경로가 존재하면 c(u,v)c(u,v)는 11이고, 그렇지 않으면 00이다.

1≤x≤N−11 \leq x \leq N-1을 만족하는 정수 xx에 대하여, N−1N-1자리 이진수로 표현되는 함수 f(x)f(x)를 다음과 같이 정의하자.

f(x)=(c(x,N−1)c(x,N−2)…c(x,1))(2)f(x) = \left( c(x, N-1)c(x, N-2)\dots c(x, 1) \right)_{(2)}

예시로 주어진 아래의 트리에서 f(3)f(3)의 값을 구해보자.

33번 노드와 연결된 모든 간선을 제거한다. 이때 00번 노드에서 44번 노드로 가는 경로는 없으므로 c(3,4)=0c(3,4)=0이다. 반면 00번 노드에서 11번 노드로 가는 경로는 남아 있으므로 c(3,1)=1c(3,1)=1이다. 같은 방법으로 나머지 값을 구하면 f(3)=000112f(3)={00011}_{2}이다.

이제 다음 값을 구해보자.

f(1)⊕f(2)⊕⋯⊕f(N−2)⊕f(N−1)f(1) \oplus f(2) \oplus \cdots \oplus f(N-2) \oplus f(N-1)

⊕\oplus는 비트별 배타적 논리합 연산자이다. 자세한 설명은 여기를 참고하라.

입력

첫 번째 줄에 노드의 개수 NN이 주어진다. (3≤N≤200 0003 \leq N \leq 200\,000)

두 번째 줄부터 N−1N-1개의 줄에 걸쳐 트리의 각 간선이 잇는 두 노드의 번호 uu, vv가 공백으로 구분되어 주어진다. (0≤u,v≤N−10 \leq u,v \leq N-1; u≠vu \neq v)

출력

f(1)⊕f(2)⊕⋯⊕f(N−2)⊕f(N−1)f(1) \oplus f(2) \oplus \cdots \oplus f(N-2) \oplus f(N-1)의 값을 N−1N-1자리 이진수로 출력한다.

가장 오른쪽 비트는 c(1,1)⊕c(2,1)⊕⋯⊕c(N−1,1)c(1, 1) \oplus c(2, 1) \oplus \dots \oplus c(N-1, 1)이다. 출력 순서에 유의하라.

예제2

  1. 예제 1

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

    입력
    5
    0 1
    0 2
    2 3
    2 4
    
    예상 출력
    0011