만드는 중입니다

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

V.I.P.

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

요약
활성 간선을 따라 가중치가 엄격하게 증가하는 경로의 개수를 세고, 각 질의마다 간선 상태를 뒤집은 뒤의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

정점이 NN개인 완전 그래프 GG와 활성화 정보 MM개, 정점의 가중치 NN개가 주어진다. 처음에는 모든 간선이 비활성화된 간선이다. 활성화 정보는 다음과 같이 주어지며, MM개의 정보에서 같은 간선이 두 번 이상 활성화되는 경우는 없다.

  • ii jj: 정점 ii와 jj를 잇는 간선을 활성화된 간선으로 만든다.

가중치가 증가하는 순서대로 방문하는 경로 중 비활성화된 간선을 지나지 않는 경로를 V.I.P.(Very Important Path)라고 한다. 아래 질의가 주어질 때마다 V.I.P.의 개수를 구한다.

  • p qp\,q: 정점 pp와 qq를 잇는 간선의 활성화 여부를 반대로 바꾼다. 바뀐 그래프의 V.I.P. 개수를 출력한 뒤, 간선의 활성화 여부를 원래대로 되돌린다.

입력

첫 줄에 정점의 개수 NN, 활성화된 간선의 개수 MM, 질의의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N≤105;0≤M≤min⁡(N(N−1)2,2×105);1≤Q≤105)(1 \leq N \leq 10^5; 0 \leq M \leq \min(\frac{N(N-1)}{2}, 2 \times 10^5); 1 \leq Q \leq 10^5)

둘째 줄에 정점들의 가중치 w1,w2,…,wNw_1, w_2, \ldots, w_N이 공백으로 구분되어 주어진다. wiw_i는 ii번 정점의 가중치이다. (1≤wi≤109)(1 \leq w_i \leq 10^9)

셋째 줄부터 M+2M + 2번째 줄까지, i+2i + 2번째 줄에 ii번째 활성화된 간선의 두 끝점 ui,viu_i, v_i가 공백으로 구분되어 한 줄씩 주어진다. (1≤ui,vi≤N;ui≠vi)(1 \leq u_i, v_i \leq N; u_i \neq v_i)

M+3M + 3번째 줄부터 M+Q+2M + Q + 2번째 줄까지, M+i+2M + i + 2번째 줄에 ii번째 질의 pi,qip_i, q_i가 공백으로 구분되어 한 줄씩 주어진다. (1≤pi,qi≤N;pi≠qi)(1 \leq p_i, q_i \leq N; p_i \neq q_i)

출력

질의가 주어질 때마다 V.I.P.의 개수를 출력한다. 답이 아주 커질 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다.

힌트

그래프 이론에서 경로란 같은 정점을 최대 한 번 방문하는 인접한 정점들의 순서이다. X(X≥1)X(X \geq 1)개의 정점으로 이루어진 나열 P=v1,v2,⋯ ,vX−1,vXP = {v_1, v_2, \cdots, v_{X-1}, v_X}이 경로가 되려면, i≠ji \neq j일 때 vi≠vjv_i \neq v_j이고, 1≤i≤X−11 \leq i \leq X - 1에 대해 끝점이 각각 vi,vi+1v_i, v_{i+1}(vi≠vi+1v_i \neq v_{i+1})인 간선이 존재해야 한다.

증가 수열은 길이가 nn인 수열 aa에 대해 a1<a2<⋯<an−1<ana_1 < a_2 < \cdots < a_{n-1} < a_n을 만족하는 수열이다.

예제3

  1. 예제 1

    입력
    3 2 2
    1 2 3
    1 2
    2 3
    1 2
    1 3
    
    예상 출력
    4
    7
    
  2. 예제 2

    입력
    4 0 5
    1 2 3 4
    1 2
    2 3
    3 4
    4 1
    1 3
    
    예상 출력
    5
    5
    5
    5
    5
    
  3. 예제 3

    입력
    3 2 1
    1 1 1
    1 2
    1 3
    1 2
    
    예상 출력
    3