Allca

Time limit: 1s Memory limit: 256MB Input: allca.in Output: allca.out

RAU-Gigel și Praștie împodobeau bradul de Crăciun și s-au gândit că ar merge niște colinde. Căutând, au dat de cuvântul “carol”, care evident le-a amintit de orele de informatică. Cu asta și copacul din fața lor în minte, s-au gândit la următoarea problemă, pe care vă roagă să o rezolvați.

Cerință

Se dă un arbore cu NN noduri înrădăcinat în 11 și un șir AA de lungime MM, cu 1A[i]N1 \leq A[i] \leq N. Definim nivelul unui nod ca fiind distanța față de rădăcină și strămoșul unui nod xx ca fiind oricare nod yy de pe drumul de la xx la rădăcină. De asemenea, lca(V)lca(V), unde VV este un șir, reprezintă nodul de nivel maxim care este strămoș pentru toate nodurile din șirul VV. Să se calculeze sumă după lca(V)lca(V), unde VV este fiecare subsecvență a șirului AA. Mai formal, să se afle:

st=1Mdr=stMlca(A[st],A[st+1],,A[dr])\sum_{st=1}^M \sum_{dr=st}^M lca(A[st], A[st+1], \dots, A[dr])

Date de intrare

Fișierul de intrare allca.in conține pe prima linie numărul NN de noduri din arbore. Pe următoarele N1N - 1 linii avem descrierea arborelui, câte o muchie pe fiecare linie. Pe linia N+1N + 1 se află MM, iar pe linia N+2N + 2 șirul AA.

Date de ieșire

Fișierul allca.out va conține, pe prima linie, un singur număr întreg, suma căutată.

Restricții și precizări

  • 1N200 0001 \leq N \leq 200 \ 000
  • 1M400 0001 \leq M \leq 400 \ 000
  • Pentru teste în valoare de 1010 de puncte, pentru oricare i>1,A[i]i>1, A[i] este strămoșul lui A[i1]A[i-1]
  • Pentru alte teste în valoare de 2020 de puncte, arborele este un lanț
  • Pentru teste în valoare de 1010 de puncte, 1N,M1 0001 \leq N, M \leq 1 \ 000
  • Pentru teste în valoare de 1010 de puncte, 1 000N,M3 0001 \ 000 \leq N, M \leq 3 \ 000
  • Pentru teste în valoare de 2525 de puncte, 3 000N,M100 0003 \ 000 \leq N, M \leq 100 \ 000
  • Pentru restul testelor se păstrează restricțiile inițiale din enunț

Exemplul 1

allca.in

2
1 2
2
2 1

allca.out

4

Explicație

lca(2)+lca(1)+lca(2,1)=2+1+1=4.lca(2)+lca(1)+lca(2,1)=2+1+1=4.

Exemplul 2

allca.in

5
1 2
2 3
3 4
4 5
8
4 1 2 4 2 4 2 2

allca.out

64

Exemplul 3

allca.in

3	
1 2
1 3
5
1 3 2 2 1

allca.out

20

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