Tree

Time limit: 3.25s Memory limit: 1024MB Input: Output:

Cerință

Se dă un arbore\bold{arbore} cu NN noduri\bold{noduri}, numerotate de la 11 la NN. Nodul 11 este ra˘da˘cina˘\bold{rădăcină}.

\\[0.25cm]

Fiecare nod uu are asociată o valoare C[u]C[u]. Notăm cu P[u]P[u] părintele nodului uu. Vom defini P[1]=0P[1] = 0. Pentru două noduri uu și vv, notăm cu LCA(u,v)LCA(u, v) cel mai apropiat strămoș comun al acestora.

\\[0.25cm]

Pentru orice două noduri uu și vv, fie pathmax(u,v)path_{max}(u, v) valoarea maximă C[x]C[x] dintre toate nodurile xx ale drumului\bold{drumului} de la uu la vv, inclusiv. Similar, fie pathmin(u,v)path_{min}(u, v) valoarea minimă C[x]C[x] dintre toate nodurile xx ale drumului de la uu la vv.

\\[0.25cm]

Se dau QQ interogări. Fiecare interogare este formată de două noduri uu și vv. Se garantează că nici uu nici vv nu este stra˘moș\bold{strămoș} pentru celălalt.

\\[0.25cm]

Pentru fiecare interogare, considerăm toate perechile de noduri (x,y)(x, y) astfel încât:

  • xx aparține drumului de la uu la LCA(u,v)LCA(u, v), excluzând LCA(u,v)LCA(u, v);
  • yy aparține drumului de la vv la LCA(u,v)LCA(u, v), excluzând LCA(u,v)LCA(u, v).

\\[0.25cm]

Pentru fiecare pereche, definim:

f(x,y)=path_max(P[x],P[y])−max⁡(path_min(x,u),path_min(y,v))f(x, y) = path\_max(P[x], P[y]) - \max(path\_min(x, u), path\_min(y, v))

\\[0.25cm]

Pentru fiecare interogare, trebuie să determini valoarea maximală posibilă pentru f(x,y)f(x, y).

\\[0.25cm]

Un drum\bold{drum} între două noduri uu și vv este o secvența de noduri x1,x2,⋯ ,xkx_1, x_2, \cdots, x_k astfel încât x1=u,xk=vx_1 = u, x_k= v și în care există câte o muchie între xix_i și xi+1x_{i+1} pentru fiecare ii (1≤i<k1 \leq i < k).

\\[0.25cm]

Un arbore\bold{arbore} este un graf conex fără cicluri. Altfel spus, este un graf cu NN noduri și N−1N − 1 muchii, astfel încât există exact un drum între oricare două noduri distincte.

\\[0.25cm]

Nodul uu este numit stra˘moș\bold{strămoș} al nodului vv dacă și numai dacă drumul de la rădacină la trece prin uu.

\\[0.25cm]

Cel mai apropiat stra˘moș\bold{Cel \ mai \ apropiat \ strămoș} comun\bold{comun} a două noduri uu și vv este cel mai depărtat de rădăcină care este strămoș pentru ambele noduri uu și vv.

Date de intrare

Prima linie conține două numere întregi NN și QQ.

\\[0.25cm]

A doua linie conține valorile C[1],C[2],⋯ ,C[N]C[1], C[2], \cdots, C[N].

\\[0.25cm]

A treia linie conține părinții P[2],P[3],⋯ ,P[N]P[2], P[3], \cdots, P[N].

\\[0.25cm]

Fiecare dintre următoarele QQ linii conține câte două numere întregi uu și vv, reprezentând o interogare.

Date de ieșire

Afișați QQ linii. Pe linia a ii-a se va afișa valoarea maximă posibilă a funcției f(x,y)f(x, y) pentru interogarea cu indicele ii.

Exemplul 1

Date de intrare

5 2
10 5 2 8 15
1 1 2 3
2 5
2 3

Date de ieșire

5
5

Explicație

Pentru prima interogare, (u,v)=(2,5)(u, v) = (2, 5), avem LCA(2,5)=1LCA(2, 5) = 1.

\\[0.25cm]

Alegând x=2x = 2 și y=3y = 3, obținem:

f(2,3)=10−max⁡(5,2)=5f(2, 3) = 10 - \max(5, 2) = 5

Se poate demonstra că aceasta este valoarea maximă posibilă. Prin urmare, răspunsul este 55.

\\[0.25cm]

Pentru cea de-a doua interogare, (u,v)=(2,3)(u, v) = (2, 3), singura pereche validă este (x,y)=(2,3)(x, y) = (2, 3). Astfel, răspunsul este tot 55.

Exemplul 2

Date de intrare

8 4
20 10 5 15 12 25 8 30
1 2 1 4 5 6 7
3 8
8 3
3 6
3 4

Date de ieșire

17
17
8
5

Restricții și precizări

  • 1≤N,Q≤250 0001 \leq N, Q \leq 250 \ 000
  • 1≤C[i]≤5⋅1081 \leq C[i] \leq 5 \cdot 10^8, pentru fiecare 1≤i≤N1 \leq i \leq N
  • 1≤P[i]<i1 \leq P[i] < i, pentru fiecare 2≤i≤N2 \leq i \leq N.
  • 2≤u,v≤N2 \leq u, v \leq N, pentru fiecare interogare.
  • Niciunul dintre nodurile uu și vv nu este strămoș al celuilalt.

Subtask-uri

Pentru unele subtask-uri, arborele are următoarele proprietăți suplimentare:

  • P[2]=P[3]=1P[2]=P[3]=1
  • P[i]=i−2P[i]=i-2 pentru fiecare 4≤i≤N4 \leq i \leq N

Ne vom referi la un asemenea arbore la un arbore special\bold{arbore \ special}.

Subtask Scor Restricții
1 4 1≤N,Q≤5001 \leq N, Q \leq 500; arbore special
2 4 1≤N,Q≤5001 \leq N, Q \leq 500
3 7 C[i]≤20C[i] \leq 20 pentru fiecare 1≤i≤N1 \leq i \leq N; arbore special
4 7 C[i]≤20C[i] \leq 20 pentru fiecare 1≤i≤N1 \leq i \leq N
5 9 C[i]≤400C[i] \leq 400 pentru fiecare 1≤i≤N1 \leq i \leq N; arbore special
6 9 C[i]≤400C[i] \leq 400 pentru fiecare 1≤i≤N1 \leq i \leq N
7 6 C[P[i]]<C[i]C[P[i]] < C[i] pentru fiecare 2≤i≤N2 \leq i \leq N; arbore special
8 6 C[P[i]]<C[i]C[P[i]] < C[i] pentru fiecare 2≤i≤N2 \leq i \leq N
9 15 1≤N,Q≤100 0001 \leq N, Q \leq 100 \ 000; arbore special
10 15 1≤N,Q≤100 0001 \leq N, Q \leq 100 \ 000
11 9 arbore special
12 9 Fără restricții suplimentare.

Log in or sign up to be able to send submissions!