Limpiando un árbol


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C++

Flora encontró un árbol, este árbol tiene N nodos, conectados por N-1 aristas. Las aristas están llenas de polvo, así que Flora decidió limpiarlas.

Limpiar las aristas de un árbol arbitrario se puede hacer de la siguiente manera:

Elija 2 hojas diferentes (un nodo es una hoja si está conectado a exactamente un nodo), y limpie todas las aristas que se encuentran en el camino más corto entre ellas. Si este camino tiene d aristas, entonces el costo de limpiar este camino es d.

Puede elegir cada hoja una sola vez. Un árbol se considera limpio cuando todas sus aristas están limpias. El costo es la suma de los costos de los caminos limpiados.

Flora cree que el árbol que se encontró es muy simple, así que se imagina Q variaciones de este. En la variación i, ella añade D_i hojas extra al árbol original: para cada una de estas hojas, ella elige un nodo del árbol original al cual conectarlo con una arista. Nota que algunos nodos podrían dejar de ser hojas.

Para cada una de estas Q variaciones diga el costo mínimo de limpiar el árbol.

Subtareas

  • Subtarea 1 (9 puntos): Q=1, hay una arista entre el nodo 1 y el i para todo 2 \leq i \leq N. Flora no le añade ninguna hoja al nodo 1.
  • Subtarea 2 (9 puntos): Q=1, hay una arista entre el nodo i y el i+1 para todo 1 \leq i \leq N. Flora no le añade ninguna hoja al nodo 1 ni al N.
  • Subtarea 3 (16 puntos): N \leq 2*10^4, Q \leq 3*10^2.
  • Subtarea 4 (19 puntos): El árbol original es un árbol binario perfecto con raíz en el nodo 1 (i.e Cada nodo interno tiene exactamente 2 hijos y todas las hojas están a la misma distancia del nodo 1).
  • Subtarea 5 (17 puntos): D_i=1 para todo i.
  • Subtarea 6 (30 puntos): Sin restricciones adicionales.

Entrada

La primera línea contiene 2 enteros separados por espacios, N (3 \leq N \leq 10^5) y Q (1 \leq Q \leq 10^5).

Cada una de las siguientes N-1 líneas contiene 2 enteros separados por espacios u y v (1 \leq u, v \leq N), denotando que los nodos u y v están conectados por una arista.

Las siguientes Q líneas describen las variaciones: el primer entero en la línea i es D_i (1 \leq D_i \leq 10^5 para todo i). Luego hay D_i enteros separados por espacios: a_1, a_2, ..., a_j, ..., a_{D_i}, a_j significa que se le añade una hoja al nodo a_j (1 \leq a_j \leq N para todo j en toda variación). Podría añadirse más de una hoja a un mismo nodo.

Se garantiza que suma de D_i \leq 10^5.

Salida

Imprima Q líneas. En la línea i imprima un solo entero: el mínimo costo requrido para limpiar la variación i. Si es imposible imprima -1.

Ejemplo

Entrada 1
7 3
1 2
2 4
4 5
5 6
5 7
3 4
1 4
2 2 4
1 1
Salida 1
-1
10
8

Comments

There are no comments at the moment.