만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

나도리합

면접 대비

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

요약
각 질의마다 두 Nadori가 속한 그룹을 합친 뒤, 합쳐진 그룹에서 서로 다른 두 Nadori 크기의 곱을 모두 더한 값을 출력합니다.
난이도

쉬움10점 중 3점

유형
유니온 파인드, 수학
정답자
아직 제출이 없습니다

문제

나도리는 자신을 터트린 나도리팡의 제작자에게 복수하기 위해 만반의 준비를 해왔다. 각 나도리 ii는 크기 sis_i를 가지며, 정확히 하나의 나도리 그룹에 속한다. 두 나도리 그룹이 융합하면, 두 그룹의 모든 나도리로 이루어진 새 나도리 그룹 하나로 대체된다. 나도리 그룹의 전투력은 그룹에 속한 서로 다른 두 나도리의 크기를 곱한 값을 모두 더한 것이다.

∑i,j∈G, i<jsi⋅sj\sum_{i, j\in G,\ i < j}s_i\cdot s_j

나도리들의 복수를 도와주기 위해, 다음 쿼리를 처리하는 프로그램을 작성해보자.

  • a ba \, b : 나도리 aa가 속한 그룹과 나도리 bb가 속한 그룹을 융합한 뒤, 융합된 그룹의 전투력을 출력한다. (이미 같은 그룹에 속해 있다면 융합해도 변하는 것이 없다)

입력

첫째 줄에 나도리의 수 NN (2≤N≤200 0002 \leq N \leq 200\,000)과 쿼리의 수 QQ (1≤Q≤200 0001 \leq Q \leq 200\,000)이 공백으로 구분되어 주어진다.

둘째 줄에 각 나도리의 크기를 나타내는 정수 NN개 s1,s2,…,sNs_1, s_2, \dots, s_N이 공백으로 구분되어 주어진다. (0≤si≤2 0000 \leq s_i \leq 2\,000)

셋째 줄부터 QQ개 줄에 걸쳐 쿼리를 나타내는 정수 aa, bb가 공백으로 구분되어 주어진다. (1≤a,b≤N1 \leq a, b \leq N; a≠ba \neq b)

출력

QQ개 줄에 걸쳐 각 쿼리의 결괏값을 출력한다.

예제1

  1. 예제 1

    입력
    3 3
    2 3 4
    1 2
    2 3
    1 3
    
    예상 출력
    6
    26
    26