Почтовая реформа

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

요약
트리에서 각 정점의 높이가 갱신될 때, 두 정점 사이 경로 위 높이의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
트리, 세그먼트 트리, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

В Флатландии идет пора реформ. Недавно была проведена реформа дорог, так что теперь по дорогам страны из любого города можно добраться в любой другой, причем только одним способом. Также была проведена реформа волшебников, так что в каждом городе остался ровно один волшебник. Теперь же началась реформа почтовой системы.

Недавно образованное почтовое агентство <<Экс-Федя>> предлагает уникальную услугу --- коллективную посылку. Эта услуга позволяет отправлять посылки жителям всех городов на каком-либо пути по цене обычной посылки. Удивительно, но пользоваться такой услугой стали только волшебники Флатландии, которые стали в большом количестве отправлять друг другу магические кактусы. Агентство столкнулось с непредвиденной проблемой: как известно, все волшебники живут в башнях и мало того, что не строят в них лестницы, так еще время от времени меняют их высоту. Поэтому, чтобы доставить посылку волшебнику, который живет в башне высотой hh, курьеру агентства требуется иметь с собой не менее hh метров веревки.

Вам поручено руководить отделом логистики --- по имеющимся данным о высотах башен и об их изменениях вам нужно определять минимальную длину веревки, которую нужно выдать курьеру, который доставляет посылки между городами ii и jj.

입력

Первая строка входного файла содержит число nn --- количество городов в Флатландии (1≤n≤500001 \le n \le 50000). Во второй строке находится nn положительных чисел, не превосходящих 10510^5 --- высоты башен в городах. В следующих n−1n-1 строках содержится по два числа u_iu\_i и v_iv\_i --- описание ii-й дороги, 1≤u_i,v_i≤n,u_i≠v_i1 \le u\_i, v\_i \le n, u\_i \ne v\_i. В следующий строке содержится число kk --- количество запросов (1≤k≤1000001 \le k \le 100000). В следующих kk строках содержатся описания запросов в следующем формате:

  • Уведомление от волшебника из города ii о том, что высота его башни стала равна hh, имеет вид !! ii hh, 1≤i≤n1 \le i \le n, 1≤h≤1051 \le h \le 10^5.
  • Запрос от курьера о выдаче веревки для доставки посылок во все города на пути от ii до jj включительно имеет вид ?? ii jj, 1≤i,j≤n1 \le i, j \le n.

출력

Для каждого запроса доставки посылок выведите минимальную длину веревки, которую необходимо выдать курьеру.

예제2

  1. 예제 1

    입력
    3
    1 2 3
    1 3
    2 3
    5
    ? 1 2
    ! 1 5
    ? 2 3
    ! 3 2
    ? 1 2
    
    예상 출력
    3
    3
    5
    
  2. 예제 2

    입력
    1
    100
    5
    ! 1 1
    ? 1 1
    ! 1 1000
    ? 1 1
    ! 1 1
    
    예상 출력
    1
    1000