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

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

가혹한 국경

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

요약
1번 노드가 뿌리인 트리에서 각 나라의 관세를 바꾸고 새 나라를 추가하며, 대표가 1번 나라까지 이동하면서 내는 총액을 구합니다.
난이도

어려움10점 중 9점

유형
트리, 세그먼트 트리, 힙, 구현
정답자
아직 제출이 없습니다

문제

유럽 연합의 회원국들은 임의의 두 국가 사이에 정확히 하나의 경로가 있는 그래프, 즉 트리로 볼 수 있습니다. 국가에는 1부터 nn까지 번호가 붙어 있고, 크로아티아는 1번입니다. 올해는 Malnar 씨가 유럽 연합의 의장을 맡아 회의를 많이 열어야 합니다. 각국 대표들은 독특하게도 무리를 지어 이동하는 것을 좋아합니다. 크로아티아로 가는 길에 어떤 국가를 지나는 사람은 모두 먼저 그 국가에 모입니다. 그다음 그 국가의 대표와 함께 한 무리가 되어 다음 국가로 이동합니다. 다음 국가에서는 또 사람들이 합류하며, 모두가 1번 노드에서 만날 때까지 이 과정이 반복됩니다. (자세한 내용은 첫 번째 입력 예시의 설명을 참고하십시오.)

입력

유럽 연합에는 사람에게 부과하는 관세가 새로 도입되었습니다. 각 국가 ii에는 관세 cic_i가 정해져 있으며, 그 나라에 들어가는 사람은 누구나 이 금액을 내야 합니다. 다만 대표는 자기 나라에서는 관세를 내지 않습니다. 세관원들은 연합의 취지에 냉소적입니다. 각 국가에서는 함께 들어오는 무리 가운데 가장 큰 무리에게 관세의 두 배를 부과합니다. 가장 큰 무리가 여러 개라면 출발한 국가의 번호가 가장 작은 무리에게 부과합니다.

프로그램은 다음 세 가지 연산을 처리해야 합니다.

  • 11 vv: 지금 회의가 열린다면 국가 vv의 대표가 얼마를 내야 하는지 구합니다.
  • 22 vv cc: 국가 vv의 관세를 cc로 바꿉니다.
  • 33 vv cc: 새로운 국가가 생깁니다. 새 국가의 번호 kk는 아직 존재하지 않는 가장 작은 자연수입니다. 이 국가의 관세는 cc이며, 국가 vv와 연결됩니다.

입력

첫 줄에 nn과 qq(1≤n,q≤1051 \le n, q \le 10^5)가 주어집니다. 이는 처음 국가의 수와 연산의 수입니다. 둘째 줄에는 nn개의 정수가 주어지며, ii번째 정수는 국가 ii의 관세 cic_i(0≤ci≤1090 \le c_i \le 10^9)입니다. 이어지는 n−1n-1개의 줄에는 uiu_i와 viv_i(1≤ui,vi≤n1 \le u_i, v_i \le n, ui≠viu_i \ne v_i)가 주어지며, 국가 uiu_i와 국가 viv_i가 간선으로 연결되어 있다는 뜻입니다.

lastanslastans는 가장 최근 1번 연산의 답입니다. 1번 연산이 한 번도 없었다면 lastans=0lastans = 0입니다. kk는 지금까지 나타난 가장 큰 국가 번호입니다. ⊕\oplus는 비트 xor 연산을 뜻합니다.

ii번째 사건이 1번 연산이면 한 줄에 11 v′v'(0≤v′≤10180 \le v' \le 10^{18}, 1≤v≤k1 \le v \le k)가 주어지며, v=v′⊕lastansv = v' \oplus lastans입니다.

ii번째 사건이 2번 또는 3번 연산이면 22 v′v' c′c' 또는 33 v′v' c′c'(0≤v′,c′≤10180 \le v', c' \le 10^{18}, 1≤v≤k1 \le v \le k, 0≤c≤1090 \le c \le 10^9)가 주어지며, v=v′⊕lastansv = v' \oplus lastans, c=c′⊕lastansc = c' \oplus lastans입니다.

출력

ii번째 줄에 ii번째 1번 연산의 답을 출력합니다.

힌트

첫 번째 입력의 설명: 네 번째 연산이 처음 등장하는 1번 연산이므로 lastans=0lastans = 0이며, 이 연산은 아무것도 바꾸지 않습니다. 국가 2의 대표는 국가 3으로 이동하면서 두 배의 관세 6을 냅니다. 이 무리가 그 도시에 들어가는 유일한 무리이므로 가장 큰 무리이기도 합니다. 이제 국가 2와 3의 대표가 함께 국가 6으로 들어갑니다. 이 무리는 두 명이고 국가 7에서 온 무리는 한 명뿐이므로, 두 배의 관세를 내는 쪽은 국가 2의 대표이며 관세 6을 냅니다. 그 뒤 국가 2, 3, 6, 7의 대표가 함께 국가 1로 이동하고, 가장 큰 무리로서 두 배의 관세를 냅니다. 국가 2의 대표는 8을 냅니다. 합계는 6+6+8=206 + 6 + 8 = 20입니다.

다섯 번째 연산에서는 lastans=20lastans = 20이므로 v=16⊕20=5v = 16 \oplus 20 = 5입니다. 국가 5의 대표는 혼자 국가 1로 이동합니다. 가장 큰 무리가 아니므로 일반 관세 44를 냅니다.

예제2

  1. 예제 1

    입력
    7 5
    4 6 3 4 0 5 9
    2 3
    3 6
    4 1
    5 1
    1 6
    7 6
    2 5 0
    2 6 3
    3 5 4
    1 2
    1 16
    
    예상 출력
    20
    4
    
  2. 예제 2

    입력
    5 5
    6 2 2 7 5
    1 3
    2 3
    3 5
    5 4
    3 1 0
    1 6
    1 4
    2 10 11
    1 10
    
    예상 출력
    6
    14
    26