만드는 중입니다

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

Hyper Tree 문제

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

요약
가중치가 있는 트리에서 간선 가중치를 비트 AND로 갱신하고, 주어진 정점에서 모든 정점까지 경로 OR 값의 합을 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 유니온 파인드, 트리, 분할 정복
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 이루어진 트리가 주어진다. 정점은 11번부터 NN번까지 번호가 붙어 있고, 간선도 입력 순서대로 11번부터 N−1N-1번까지 번호가 붙어 있다. ii번 간선의 가중치는 WiW_i이다.

두 가지 유형의 질의가 합해서 QQ개 주어진다. 2번 질의가 주어질 때마다 답을 출력하라.

  • 1 e v: ee번 간선의 가중치 WeW_e를 We&vW_e\And v로 바꾼다. 여기서 &\And는 Bitwise AND 연산이다.
  • 2 n: ∑i=1Ndist(n,i)\sum_{i=1}^{N}{dist(n, i)}를 출력한다. dist(a,b)dist(a, b)는 정점 aa와 bb를 잇는 유일한 경로에 있는 간선 가중치를 모두 Bitwise OR 연산한 값이다. a=ba = b이면 dist(a,b)=0dist(a, b) = 0이다.

입력

첫째 줄에 NN과 QQ가 공백으로 구분되어 주어진다. (2≤N≤300 000;1≤Q≤300 000)(2 \le N \le 300\ 000; 1 \le Q \le 300\ 000)

다음 N−1N-1개의 줄에는 간선 정보 AiA_i, BiB_i, WiW_i가 공백으로 구분되어 주어진다. ii번 간선은 정점 AiA_i와 BiB_i를 잇고, 초기 가중치는 WiW_i이다. (1≤Ai<Bi≤N;0≤Wi<220)(1 \le A_i < B_i \le N; 0 \le W_i < 2^{20})

다음 QQ개의 줄에는 아래 형식 중 하나로 질의가 주어진다.

  • 1 e v: (1≤e<N;0≤v<220)(1 \le e < N; 0 \le v < 2^{20})
  • 2 n: (1≤n≤N)(1 \le n \le N)

입력의 모든 수는 정수이고, 2번 질의가 적어도 하나 이상 주어짐이 보장된다.

출력

2번 질의의 결과를 질의가 주어진 순서대로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    6 4
    3 4 1
    1 5 11
    3 5 13
    5 6 7
    2 5 0
    2 3
    1 3 10
    2 3
    2 2
    
    예상 출력
    57
    43
    35