parb

Time limit: 0.75s Memory limit: 256MB Input: parb.in Output: parb.out

Avem un arbore cu NN noduri şi rădăcina în nodul 11, indexat de la 11 la NN. Fiecare muchie este etichetată cu o literă.
Pentru două noduri (x,y)(x, y) unde xx este strămoş al lui yy definim şirul strămoşesc ca fiind concatenarea muchiilor drumului de la yy la xx.

Cerință

Pe acest arbore se fac QQ întrebări, o întrebare are forma unei perechi (x,y)(x, y) unde x este un strămoş de-al lui yy. Fie SS şirul strămoşesc corespunzător nodurilor xx şi yy.

Pentru fiecare întrebare trebuie să găsiţi câte perechi (a,b)(a, b) (inclusiv (x,y)(x, y)) dau şirul strămoşesc egal cu SS.

Date de intrare

Fişierul de intrare parb.in conţine pe prima linie numărul NN de noduri, urmat de numărul QQ de întrebări. Vor urma N1N-1 linii, fiecare linie va conţine un triplet (x,y,c)(x, y, c) reprezentând că există o muchie de la xx la yy care este etichetată cu caracterul cc. Urmează QQ linii, pe fiecare linie se află câte o pereche (x,y)(x, y) corespunzătoare unei întrebări.

Date de ieșire

Fişierul de ieşire parb.out va conţine QQ linii. Pe linia ii se va afla un singur întreg, răspunsul la întrebarea ii.

Restricții și precizări

  • 1N100 0001 \leq N \leq 100 \ 000
  • 0Q100 0000 \leq Q \leq 100 \ 000
  • Muchiile sunt etichetate cu litere mici ale alfabetului englez.
  • Pentru teste în valoare de 2020 puncte, N100N \leq 100.

Exemplu

parb.in

10 4
1 2 m
2 3 m
3 4 c
3 5 c
5 6 l
2 7 c
1 8 c
8 9 m
9 10 c
2 5
1 9
9 10
1 4

parb.out

4
1
5
2

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