QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 256 MB Total points: 100

#394. Metro

Statistics

La red de calles de Bytown consta de $n$ intersecciones y $n-1$ calles bidireccionales, donde cada calle conecta directamente un par de intersecciones y es posible viajar entre cualquier par de intersecciones. Para mejorar el tráfico, el alcalde Byteasar quiere construir un sistema de metro. Específicamente, desea establecer estaciones de metro en algunas intersecciones y tender vías que atraviesen algunas calles. La red de metro debe ser conexa, es decir, los trenes deben poder circular entre cualquier par de estaciones de metro, posiblemente pasando por otras estaciones intermedias.

El costo de excavar túneles es alto, pero el costo de construir estaciones terminales (es decir, estaciones donde solo llega un túnel) es aún mayor, ya que estas estaciones requieren infraestructura adicional para el estacionamiento y mantenimiento de los trenes. Debido a restricciones presupuestarias, el número de estaciones terminales puede ser como máximo $k$. Por otro lado, una red de metro razonable requiere al menos dos de tales estaciones.

El "índice de irritación" de un pasajero se define como el número mínimo de calles que debe recorrer a pie desde su hogar hasta la estación de metro más cercana. El alcalde solicita diseñar una red de metro que minimice el valor máximo de los índices de irritación de todos los pasajeros. Suponemos que en cada intersección vive un grupo de pasajeros.

Entrada

La primera línea contiene dos enteros $n$ y $k$ ($n \ge 3, 2 \le k \le n$), separados por un espacio, que representan el número de intersecciones y el número máximo de estaciones terminales, respectivamente. Las intersecciones están numeradas del $1$ al $n$.

Las siguientes $n-1$ líneas contienen cada una dos enteros $a$ y $b$ ($1 \le a, b \le n, a \neq b$), separados por un espacio, que indican que las intersecciones $a$ y $b$ están conectadas directamente por una calle.

Salida

La primera línea debe imprimir dos enteros $r$ y $s$, separados por un espacio, que representan el valor mínimo del máximo índice de irritación de los pasajeros y el número de estaciones terminales en dicho diseño (cumpliendo $2 \le s \le k$). La segunda línea debe imprimir $s$ enteros distintos, en el rango de $1$ a $n$, correspondientes a los números de las intersecciones donde se establecen las estaciones terminales.

Entre todos los diseños de red, se debe priorizar aquel con el menor $r$. En caso de empate, el objetivo secundario es minimizar $s$. Si existen múltiples diseños que cumplen con el $r$ mínimo y el $s$ mínimo, se puede imprimir cualquiera de ellos.

Ejemplos

Ejemplo 1

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

Salida 1

1 2
8 1

Nota

La red de calles se muestra en la figura. El diseño óptimo de la red de metro tiene dos estaciones terminales (ubicadas en las intersecciones 1 y 8). El valor máximo del índice de irritación de los pasajeros es 1. Tenga en cuenta que existen otros diseños óptimos de red de metro que cumplen $r=1$ y $s=2$. Además, existen redes con $r=1$ y $s=3$, pero no son óptimas.

Ejemplos de prueba

  • 1ocen: $n = 30, k = 29$, las intersecciones $2, \dots, n$ están todas conectadas a la intersección $1$.
  • 2ocen: $n = 5000, k = 4000$, las intersecciones $1, 2, \dots, 2000$ forman una ruta consecutiva, las intersecciones $2001, \dots, 3500$ están todas conectadas a la intersección $1$, y las intersecciones $3501, \dots, 5000$ están todas conectadas a la intersección $2000$.
  • 3ocen: $n = 2^{20} - 1, k = 1509$, las intersecciones forman un árbol binario completo.

Subtareas

El conjunto de pruebas consta de las siguientes subtareas. Cada subtarea puede contener múltiples casos de prueba. Si el programa solo imprime correctamente la primera línea, obtendrá el 50% de la puntuación de ese caso de prueba. Recuerde que el programa aún debe terminar correctamente y no exceder los límites de tiempo y memoria. Los límites de tiempo para cada subtarea se publican en SIO.

Subtarea Restricciones Puntuación
1 $n \le 5000$ 30
2 $n \le 500\,000$ 40
3 $n \le 3\,000\,000$ 30

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.