spiderman

Time limit: 2s Memory limit: 512MB Input: Output:

Cerință

Se dă un arbore cu nn noduri și un set de kk noduri importante. Putem efectua operații de distrugere astfel: alegem un nod xx, iar în urma operației nodul xx și toți vecinii săi direcți sunt eliminați din arbore (operația nu se propagă mai departe).

Se cere să determinăm numărul minim de operații necesare pentru a distruge toate nodurile neimportante, fără ca vreun nod important să fie distrus.

Date de intrare

Prima linie conține un număr întreg tt, reprezentând numărul de teste.

Pentru fiecare test:

  • Prima linie conține două numere întregi nn și kk, unde nn este numărul de noduri al arborelui, iar kk este numărul de noduri importante.
  • A doua linie conține kk numere întregi distincte, reprezentând indicii nodurilor importante.
  • Următoarele n1n-1 linii conțin câte două numere întregi uu și vv, reprezentând o muchie a arborelui între nodurile uu și vv.

Date de ieșire

Pentru fiecare test, se va afișa pe o singură linie un număr întreg: numărul minim de operații necesare pentru a distruge toate nodurile neimportante, fără a distruge vreun nod important sau -1 daca nu este posibil.

Restricții și precizări

  • 1t101 \leq t \leq 10
  • 1n1051 \leq n \leq 10^5
  • 0kn0 \leq k \leq n
  • 1u,vn1 \leq u, v \leq n, uvu \neq v
  • Toate testele respectă proprietățile unui arbore (conex, aciclic).
  • Nodurile sunt numerotate de la 11 la nn.
  • Pentru teste valorand 4040 de puncte, 1n10001 \leq n \leq 1000

Exemplul 1

stdin

5

5 1
3
1 2
2 3
3 4
4 5

8 1
4
1 2
3 2
5 3
2 4
5 6
4 8
7 8

3 1
2
1 2
2 3

3 3
1 2 3
1 2
2 3

3 0
1 2
2 3

stdout

2
3
-1
0
1

Explicație

In primul exemplu, avem un arbore-linie 123451-2-3-4-5, unde nodul 33 este important.
Operații posibile:

  • Distrugem nodul 11 \Rightarrow se elimină 11 și 22;
  • Distrugem nodul 55 \Rightarrow se elimină 44 și 55.

Nodul 33 (important) rămâne neatins, iar toate celelalte noduri sunt distruse.
Număr minim de operații: 22.

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