비트 연산 게임
시간 제한2초메모리 제한512 MB
루트가 있는 트리에서 앨리스와 밥이 번갈아 자식 정점으로 내려가며 X 또는 Y로 비트 연산을 적용할 때, 각 질의 (X, Y)에 대한 최종 T 값을 구합니다.
문제
개의 정점으로 이루어진 루트가 있는 트리가 주어진다. 정점에는 부터 까지 번호가 붙어 있으며, 번 정점이 루트이다.
루트에는 T = 0이 적혀 있다. 그 밖의 정점에는 다음 연산 중 하나가 적혀 있다.
T=T&XT=T&YT=T|XT=T|YT=T^XT=T^Y
여기서 &, |, ^는 각각 비트 AND, OR, XOR을 뜻한다.
A군과 B군은 이 트리로 다음 게임을 번 진행한다. 두 사람은 루트에서 출발하여 A군부터 번갈아 자식 정점을 골라 이동하고, 잎에 도달할 때까지 이를 반복한다. 지나간 정점에 적힌 연산을 지나간 순서대로 적용했을 때의 최종 값이 점수이다. B군은 점수를 작게, A군은 점수를 크게 만들고자 한다. 번 게임 각각의 , 값이 주어지면, 두 사람이 최적의 선택을 했을 때 각 게임의 점수를 구하라.
입력
첫 줄에 과 이 주어진다.
둘째 줄부터 번째 줄까지 번부터 번 정점에 적힌 연산이 주어진다.
이어서 개의 줄에 간선으로 연결된 두 정점 번호 와 가 주어진다.
마지막으로 개의 줄에 각 게임의 와 가 주어진다.
출력
각 게임의 최종 값을 개의 줄에 출력하라.