만드는 중입니다

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

차이 그래프

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

요약
정점 차이를 N으로 나눈 나머지로 정해지는 간선 가중치를 가진 방향 그래프에서 여러 출발지와 도착지 사이의 최단 경로 길이를 구합니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 수학
정답자
아직 제출이 없습니다

문제

승현이에게 정점이 NN개인 방향 그래프 GG와 음이 아닌 정수로 이루어진 배열 A[1],A[2],…,A[N−1]A[1], A[2], \dots, A[N-1]이 있습니다. 정점에는 00 이상 N−1N-1 이하의 번호가 붙어 있고, 간선마다 가중치가 있습니다. 처음에는 간선이 하나도 없어서 승현이는 그래프가 허전하다고 느꼈습니다. 그래서 다음과 같은 방법으로 간선을 잇기로 했습니다.

서로 다른 두 정점 uu와 vv (0≤u,v<N0 \le u, v < N, u≠vu \ne v)에 대해

  • u>vu > v이고 A[u−v]A[u-v]가 양수이면, uu에서 vv로 향하는 가중치 A[u−v]A[u-v]인 간선을 추가합니다.
  • u<vu < v이고 A[u−v+N]A[u-v+N]이 양수이면, uu에서 vv로 향하는 가중치 A[u−v+N]A[u-v+N]인 간선을 추가합니다.

간선을 모두 추가한 뒤, 승현이는 한 정점에서 출발해 다른 정점에 도착하는 최단 경로의 길이를 구하려고 합니다.

입력

첫째 줄에 그래프 GG의 정점 수 NN (5≤N≤20005 \le N \le 2000)이 주어집니다.

둘째 줄에 A[1],A[2],…,A[N−1]A[1], A[2], \dots, A[N-1] (0≤A[1],A[2],…,A[N−1]≤100000 \le A[1], A[2], \dots, A[N-1] \le 10000)이 공백을 사이에 두고 주어집니다.

셋째 줄에 질의의 수 QQ (1≤Q≤2000001 \le Q \le 200000)가 주어집니다.

이어지는 QQ개 줄 가운데 ii번째 줄 (1≤i≤Q1 \le i \le Q)에는 두 정수 aia_i와 bib_i (0≤ai,bi<N0 \le a_i, b_i < N, ai≠bia_i \ne b_i)가 공백을 사이에 두고 주어집니다.

출력

각 질의마다 aia_i번 정점에서 출발해 bib_i번 정점에 도착하는 최단 경로의 길이를 입력에 주어진 순서대로 한 줄에 하나씩 출력합니다. 그러한 최단 경로가 없으면 −1-1을 출력합니다.

예제2

  1. 예제 1

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

    입력
    6
    0 3 0 0 0
    4
    0 4
    1 2
    2 3
    4 0
    
    예상 출력
    3
    -1
    -1
    6