아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Cow Land

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

요약
가중치가 있는 트리에서 한 정점의 값을 갱신하고 두 정점 사이 경로의 모든 값에 대한 XOR을 구하는 질의를 처리한다.
난이도

어려움10점 중 8점

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

문제

Cow Land는 소를 위한 특별한 놀이공원이다. 소들은 이곳을 거닐고, 맛있는 풀을 먹고, 여러 소 명소를 찾아간다 (롤러코우스터가 특히 인기가 많다).

총 NN개의 명소가 있다 (2≤N≤1052 \leq N \leq 10^5). 일부 명소 쌍은 N−1N-1개의 길로 연결되어 있어, 임의의 두 명소 사이에 여러 길로 이루어진 유일한 경로가 존재한다. 명소 ii에는 정수 즐거움 값 eie_i가 있다. 어떤 명소는 아침에 더 매력적이고 어떤 명소는 오후에 더 매력적이기 때문에, 이 값은 하루 동안 변할 수 있다.

명소 ii에서 명소 jj로 이동하는 소는 ii에서 jj까지의 경로에 있는 모든 명소를 체험한다. 흥미롭게도 이 경로 전체의 즐거움 값은 명소 ii와 jj의 값까지 포함하여 경로 위 모든 즐거움 값의 비트 XOR로 주어진다.

소들이 다음 Cow Land 여행에서 사용할 경로의 즐거움 값을 구할 수 있도록 도와주자.

입력

첫째 줄에 NN과 질의의 수 QQ가 주어진다 (1≤Q≤1051 \leq Q \leq 10^5). 다음 줄에 e1…eNe_1 \ldots e_N이 주어진다 (0≤ei≤1090 \leq e_i \leq 10^9). 다음 N−1N-1개의 줄에는 길이 두 정수 명소 번호 aa와 bb로 주어진다 (둘 다 1…N1 \ldots N 범위). 마지막 QQ개의 줄에는 eie_i 값 중 하나를 갱신하는 연산이나 경로의 즐거움을 묻는 질의가 주어진다. "1 ii vv" 형태의 줄은 eie_i를 값 vv로 갱신해야 함을 나타내고, "2 ii jj" 형태의 줄은 명소 ii와 jj를 잇는 경로의 즐거움을 묻는 질의이다.

전체 점수의 최대 50%에 해당하는 테스트 데이터에서는 명소의 값이 변하지 않는다.

출력

"2 ii jj" 형태의 질의마다 ii에서 jj까지의 경로의 즐거움을 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    5 5
    1 2 4 8 16
    1 2
    1 3
    3 4
    3 5
    2 1 5
    1 1 16
    2 3 5
    2 1 5
    2 1 3
    
    예상 출력
    21
    20
    4
    20