QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓

#18513. Juego: Oráculo de Distancia Adversarial

Statistiques

Alice y Bob juegan un juego en un árbol $T$ con $n$ vértices. Alice quiere identificar un vértice secreto $x$. Sin embargo, Bob es adversario y no tiene que elegir $x$ de antemano.

Inicialmente, cada vértice de $T$ se considera un candidato "posible" para $x$. En cada turno, Alice elige un vértice $v$ y pregunta la distancia desde $v$ hasta $x$. Bob responde con un entero no negativo $d$. Alice entonces elimina todo vértice candidato $u$ tal que $\operatorname{dist}(u, v) \neq d$.

La respuesta de Bob debe ser consistente con al menos un candidato restante. En otras palabras, después de que Alice elimine todos los vértices $u$ con $\operatorname{dist}(u, v) \neq d$, el conjunto de candidatos debe seguir siendo no vacío. Sujeto a esta regla, Bob elige sus respuestas para obligar a Alice a usar la mayor cantidad posible de consultas.

Alice gana tan pronto como quede exactamente un vértice candidato. Alice elige sus consultas de manera óptima para minimizar el número de consultas.

Dada la estructura del árbol, encuentre el número mínimo de consultas que Alice necesita para garantizar la victoria, independientemente de la estrategia de Bob.

Por ejemplo, si Alice consulta un vértice $v$ y Bob responde $d=2$, entonces todos los vértices a distancia exactamente $2$ de $v$ siguen siendo posibles, y todos los demás vértices son eliminados.

Consultando $v$ y recibiendo la respuesta 2: el vértice sombreado es el consultado, los vértices punteados siguen siendo posibles y los vértices sin relleno son eliminados.

Entrada

La primera línea contiene un entero $t$ ($1 \le t \le 10^5$), el número de casos de prueba.

Cada caso de prueba comienza con un entero $n$ ($2 \le n \le 2000$), el número de vértices.

Cada una de las siguientes $n-1$ líneas contiene dos enteros $a_i$ y $b_i$ ($1 \le a_i,b_i \le n$, $a_i \ne b_i$), indicando una arista del árbol.

Se garantiza que las aristas de cada caso de prueba forman un árbol y que $\sum n^2 \le 2000^2$ sobre todos los casos de prueba.

Salida

Para cada caso de prueba, imprima un entero: el número mínimo de consultas que Alice necesita en el peor caso.

Ejemplos

Entrada 1

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

Salida 1

1
3

Nota

  • En el primer caso de prueba, el árbol es un camino de cuatro vértices. Consultar el vértice 1 da distancias posibles 0, 1, 2, 3, todas distintas, por lo que una consulta es suficiente.
  • En el segundo caso de prueba, el árbol es una estrella centrada en el vértice 1:
  • En los siguientes diagramas, el vértice sombreado es el vértice consultado, los vértices punteados siguen siendo posibles después de la respuesta de Bob, y los vértices sin relleno han sido eliminados.
problem_18513_2.png

Consulta 2, respuesta 2: los vértices 3, 4, 5 siguen siendo posibles.

problem_18513_3.png

Consulta 3, respuesta 2: los vértices 4, 5 siguen siendo posibles.

problem_18513_4.png

Consulta 4, respuesta 2: solo queda el vértice 5.

  • Esto muestra que tres consultas son suficientes. Alice primero consulta la hoja 2. Si Bob responde 0 o 1, el secreto se determina inmediatamente; la peor respuesta es 2, dejando las hojas 3, 4, 5. Luego Alice consulta la hoja 3, y en el peor caso quedan las hojas 4, 5. Una consulta final las distingue.
  • Dos consultas no son suficientes. Después de la primera consulta, Bob puede mantener al menos tres hojas posibles. Entre tres hojas de una estrella, una consulta de distancia más no puede distinguirlas todas, porque al menos dos de las hojas tienen la misma distancia al vértice consultado.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.