만드는 중입니다

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

트리 칠하기

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

요약
트리에서 두 노드 사이 경로의 모든 노드 값을 변경 번호로 바꾸고, 주어진 노드의 현재 값을 구합니다.
난이도

보통10점 중 6점

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

문제

정점에 1부터 NN까지의 자연수 번호가 매겨진 NN개의 정점으로 이루어진 트리가 주어진다. 각 정점에는 값이 하나씩 대응되어 있다. 처음에는 모든 정점의 값이 0이다. 민코는 여러 번에 걸쳐 일부 정점의 값을 바꾸려고 한다. 구체적으로, ii번째 변경에서는 aia_i에서 bib_i까지의 경로 위에 있는 모든 정점의 값을 ii로 설정한다. 그의 호기심 많은 친구 슬라브코는 가끔 특정 정점의 현재 값이 얼마인지 묻는다. 민코가 슬라브코의 질문에 답하도록 도와라.

입력

첫째 줄에 자연수 NN이 주어진다. 이어지는 N−1N-1개의 줄에는 트리에서 간선으로 연결된 정점의 쌍인 자연수 aa와 bb가 각각 주어진다.

다음 줄에는 민코의 변경 횟수와 슬라브코의 질문 횟수의 합인 자연수 MM이 주어진다. 이어지는 MM개의 줄은 다음 두 형태 중 하나이다.

  • 1 a_i b_i: 민코의 변경. 이것이 ii번째 변경이라면, aia_i에서 bib_i까지의 경로 위에 있는 모든 정점의 값을 ii로 설정한다.
  • 2 x: 슬라브코의 질문. 정점 xx의 현재 값은 얼마인가?

출력

슬라브코의 각 질문에 대한 답을 한 줄에 하나씩 출력한다.

힌트

세 번째 예제 설명:

처음에는 모든 정점의 값이 0이다.

  1. 슬라브코가 정점 5의 값을 묻는다. 0이다.
  2. 같은 질문을 다시 한다. 여전히 0이다.
  3. 정점 3에 대해 묻는다. 0이다.
  4. 이것은 민코의 첫 번째 변경이므로, 2에서 3까지의 경로에 있는 정점 2, 1, 3의 값을 1로 설정한다.
  5. 슬라브코가 정점 2의 값을 묻는다. 1이다.
  6. 이것은 민코의 두 번째 변경이므로, 3에서 4까지의 경로 위 정점들의 값을 2로 설정한다.
  7. 슬라브코가 정점 3의 값을 묻는다. 방금 2로 설정되었다.
  8. 정점 1의 값을 묻는다. 1이다.

예제3

  1. 예제 1

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

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

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