만드는 중입니다

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

비행

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

요약
트리와 질의 (u, v, d)가 주어집니다. 거리가 d 이상인 두 정점 사이로만 이동할 때 u에서 v까지 최소 이동 횟수를 구합니다. 도달할 수 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
트리, 최단 경로, 그리디
정답자
아직 제출이 없습니다

문제

정점이 NN개인 트리가 주어진다. 두 정점 사이의 거리는 두 정점을 잇는 단순 경로에 속한 간선의 수이다.

질의는 QQ개이다. 각 질의는 두 정점 uu, vv와 정수 dd로 주어진다. 두 정점의 쌍은 거리가 dd 이상일 때 좋은 쌍이라고 한다. 한 번의 이동에서는 좋은 쌍 사이로만 옮겨 갈 수 있다. uu에서 vv로 가는 데 필요한 최소 이동 횟수를 구하라. 도달할 수 없으면 답은 −1-1이다.

질의는 수식으로 생성되므로 그 수가 많다.

입력

첫 줄에 세 정수 NN, QQ, MM이 주어진다. 각각 정점의 수, 질의의 수, dd의 상한이다. (1≤N≤2⋅1051 \leq N \leq 2 \cdot 10^5, 1≤Q≤1061 \leq Q \leq 10^6, 1≤M≤2⋅1051 \leq M \leq 2 \cdot 10^5).

둘째 줄에는 N−1N - 1개의 정수 f2f_2, f3f_3, …\ldots, fNf_N이 주어진다. 2≤i≤N2 \leq i \leq N인 모든 ii에 대해 정점 ii와 fif_i 사이에 간선이 있다 (1≤fi<i1 \leq f_i < i).

셋째 줄에는 여섯 정수 u1u_1, v1v_1, d1d_1, AA, BB, CC가 주어진다 (1≤u1,v1≤N1 \leq u_1, v_1 \leq N, 0≤d1<M0 \leq d_1 < M, 104≤A,B,C≤2⋅10410^4 \leq A, B, C \leq 2 \cdot 10^4). 첫 번째 질의는 u1u_1, v1v_1, d1d_1이다.

2≤i≤Q2 \leq i \leq Q인 ii번째 질의는 다음과 같이 생성된다.

ui=((A⋅ui−1+B+ansi−1) mod N)+1u_i = ((A \cdot u_{i-1} + B + \mathit{ans}_{i-1}) \bmod N) + 1,

vi=((B⋅vi−1+C+ansi−1) mod N)+1v_i = ((B \cdot v_{i-1} + C + \mathit{ans}_{i-1}) \bmod N) + 1,

di=(C⋅di−1+A+ansi−1) mod Md_i = (C \cdot d_{i-1} + A + \mathit{ans}_{i-1}) \bmod M.

여기서 ansk\mathit{ans}_k는 kk번째 질의의 답이다.

출력

다음 정수 SS를 출력하라.

S=∑i=1Qi⋅(ansi+1)S = \sum_{i=1}^{Q} i \cdot (\mathit{ans}_i + 1)

예제1

  1. 예제 1

    입력
    6 9 5
    1 2 1 3 3
    6 3 0 10865 16947 15183
    
    예상 출력
    55