Tree Kadane

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

요약
가중치가 있는 트리에서 정점 하나의 가중치를 바꾸는 갱신이 주어질 때마다, 공집합이 아닌 연결 부분 집합의 합의 최댓값을 출력한다.
난이도

어려움10점 중 8점

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

문제

11부터 NN까지 번호가 매겨진 NN개의 정점으로 이루어진 트리 TT가 주어진다. 각 ii번 정점은 정수 가중치 A_iA\_i를 가진다.

TT의 연결 부분 집합 SS는 TT의 정점들의 공집합이 아닌 부분 집합으로, SS에 속하는 두 정점 aa, bb에 대해 SS에 속한 정점만을 사용하는 aa에서 bb로 가는 경로가 TT에 존재한다.

다음 QQ개의 쿼리를 처리해야 한다.

  • kk xx: A_kA\_k를 xx로 바꾸고 TT의 연결 부분 집합 SS에 대한 ∑_i∈SA_i\sum\_{i\in S}{A\_i}의 최댓값을 출력한다.

입력

첫 번째 줄에 정점의 개수를 나타내는 정수 NN이 주어진다.

두 번째 줄에 각 정점의 가중치를 나타내는 NN개의 정수 A_1,A_2,…,A_NA\_1,A\_2,\dots ,A\_N이 공백으로 구분되어 주어진다.

다음 N−1N-1개의 줄 중 ii번째 줄에 두 정수 u_iu\_i와 v_iv\_i가 공백으로 구분되어 주어진다. 이들은 ii번째 간선의 양 끝 점을 나타낸다.

다음 줄에 쿼리의 개수를 나타내는 정수 QQ가 주어진다.

다음 QQ개의 줄에 걸쳐 각 줄에 각 쿼리를 나타내는 두 정수 kk와 xx가 공백으로 구분되어 주어진다.

출력

QQ개의 줄에 걸쳐 쿼리의 정답을 한 줄에 하나씩 출력한다.

제한

  • 1≤N≤1051\leq N\leq 10^5
  • −109≤A_i≤109-10^9\leq A\_i\leq 10^9 (1≤i≤N1\leq i\leq N)
  • 1≤u_i,v_i≤N1\leq u\_i,v\_i\leq N (1≤i≤N−11\leq i\leq N-1)
  • 주어지는 그래프는 트리이다.
  • 1≤Q≤1051\leq Q\leq 10^5
  • 각 쿼리에 대해 1≤k≤N1\leq k\leq N
  • 각 쿼리에 대해 −109≤x≤109-10^9\leq x\leq 10^9

예제1

  1. 예제 1

    입력
    5
    3 -1 -4 -1 -5
    1 2
    1 3
    3 4
    3 5
    5
    1 -2
    3 2
    4 1
    2 5
    1 -9
    
    예상 출력
    -1
    2
    3
    6
    5