만드는 중입니다

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

비트 연산 게임

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

요약
루트가 있는 트리에서 앨리스와 밥이 번갈아 자식 정점으로 내려가며 X 또는 Y로 비트 연산을 적용할 때, 각 질의 (X, Y)에 대한 최종 T 값을 구합니다.
난이도

어려움10점 중 8점

유형
게임 이론, 트리, 비트 연산, 동적 계획법
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 이루어진 루트가 있는 트리가 주어진다. 정점에는 00부터 N−1N-1까지 번호가 붙어 있으며, 00번 정점이 루트이다.

루트에는 T = 0이 적혀 있다. 그 밖의 정점에는 다음 연산 중 하나가 적혀 있다.

  • T=T&X
  • T=T&Y
  • T=T|X
  • T=T|Y
  • T=T^X
  • T=T^Y

여기서 &, |, ^는 각각 비트 AND, OR, XOR을 뜻한다.

A군과 B군은 이 트리로 다음 게임을 MM번 진행한다. 두 사람은 루트에서 출발하여 A군부터 번갈아 자식 정점을 골라 이동하고, 잎에 도달할 때까지 이를 반복한다. 지나간 정점에 적힌 연산을 지나간 순서대로 적용했을 때의 최종 TT 값이 점수이다. B군은 점수를 작게, A군은 점수를 크게 만들고자 한다. MM번 게임 각각의 XX, YY 값이 주어지면, 두 사람이 최적의 선택을 했을 때 각 게임의 점수를 구하라.

입력

첫 줄에 NN과 MM이 주어진다.

둘째 줄부터 NN번째 줄까지 11번부터 N−1N-1번 정점에 적힌 연산이 주어진다.

이어서 N−1N-1개의 줄에 간선으로 연결된 두 정점 번호 uiu_i와 viv_i가 주어진다.

마지막으로 MM개의 줄에 각 게임의 XiX_i와 YiY_i가 주어진다.

출력

각 게임의 최종 TT 값을 MM개의 줄에 출력하라.

제한

  • 1≤N≤1000001 \leq N \leq 100000
  • 1≤M≤1000001 \leq M \leq 100000
  • 0≤X,Y<2160 \leq X, Y < 2^{16}

예제1

  1. 예제 1

    입력
    6 3
    T=T|X
    T=T|Y
    T=T|Y
    T=T^Y
    T=T&X
    0 1
    0 2
    1 3
    1 4
    2 5
    5 6
    3 5
    0 0
    
    예상 출력
    4
    6
    0