XOR과 집합과 트리와 쿼리
시간 제한2초메모리 제한1024 MB
정점마다 값이 적힌 트리에서 각 질의 경로의 값들로 만든 닫힌 집합의 최솟값을 구합니다.
문제
양의 정수를 원소로 갖는 유한집합 에 대해, 를 아래 조건을 모두 만족하는 유한집합 중 크기가 가장 작은 집합으로 정의한다. 이런 집합은 하나만 존재한다.
- 이다.
- 임의의 양의 정수 에 대해 이고 이면 이다. 여기서 는 비트 단위 XOR 연산이다.
- 임의의 양의 정수 에 대해 이고 이면 이다.
- 임의의 양의 정수 에 대해 이고 이면 이다.
정점이 개인 트리가 있다. 모든 ()에 대해 번 정점에는 양의 정수 가 적혀 있다. 이때 개의 쿼리를 처리해야 한다.
쿼리 에 대해, 번 정점에서 번 정점까지의 최단 경로에 포함되는 정점들의 집합을 라고 하자. 이때 집합 의 원소 중 최솟값을 출력해야 한다.
입력
첫 줄에 정점의 개수 과 쿼리의 개수 가 공백으로 구분되어 주어진다.
둘째 줄에는 각 정점에 적힌 양의 정수 이 공백으로 구분되어 주어진다.
셋째 줄부터 개의 줄에는 트리의 간선이 연결하는 두 정점의 번호 , 가 공백으로 구분되어 주어진다.
번째 줄부터 개의 줄에는 쿼리를 나타내는 두 정수 , 가 공백으로 구분되어 주어진다.
출력
각 쿼리의 답을 한 줄에 하나씩, 총 개의 줄에 출력한다.
제한
- ()
- 모든 쿼리에서