Optimizando viajes
Cansado de la vida en su isla, Sora decidió viajar por diferentes partes del mundo en busca de oportunidades, y qué mejor forma de hacerlo que volar.
Un aeropuerto tiene una red de vuelo que cubre puntos en el cielo conectados por
vuelos bidireccionales; es posible viajar desde un punto a cualquier otro, pero la red no está saturada (existe al menos un par de puntos que no tienen un vuelo directo entre sí). Debido a los fuertes vientos, y para evitar colisiones entre los aviones, se han impuesto restricciones a los vuelos por lo que es posible saber, para cada uno, cuánto tiempo
demorará un avión en llegar del punto
al punto
para cada
tal que
.
Sora realizará viajes, en cada viaje tomará un avión en un aeropuerto distinto, y su objetivo para cada viaje es comenzar desde el punto
y llegar al punto
. Los aviones siempre viajan de un punto a otro por la ruta que menos tiempo consuma.
Sora considera que un viaje es óptimo si demora unidades de tiempo completarlo, por lo que usando sus conocimientos en programación ha decidido añadir un vuelo extra a la red. Sin embargo esto no es tan fácil, ya que si no se hace con cuidado podría provocar un accidente. Para la red existente se considera seguro añadir un vuelo
si cumple con las siguientes condiciones:
- No existe ningún vuelo entre los puntos
y
.
- El tiempo
del vuelo está en el rango
.
Sora quiere saber cuántos vuelos seguros diferentes existen tal que si los añadiera a la red su viaje fuera óptimo; sin embargo, a pesar de poder hacerlo, prefirió dejarles este problema a sus amigos de la isla a modo de entrenamiento para la OII y de regalo de despedida.
Un vuelo se considera diferente de otro si difiere en los puntos que conecta o su tiempo.
Entrada
La primera línea contiene un entero
la cantidad de viajes.
A continuación se describe el formato de cada viaje:
- La primera línea contiene tres enteros,
,
,
la cantidad de puntos, la cantidad de vuelos y el tiempo óptimo, respectivamente.
- La segunda línea contiene dos enteros
y
los puntos de inicio y fin del viaje, respectivamente.
- La tercera línea contiene dos enteros
y
el rango de unidades de tiempo que puede tener el vuelo a agregar.
- Le siguen
líneas cada una con tres enteros
,
,
la información de cada vuelo: los dos puntos que conecta y el tiempo que demora un avión al viajar entre ellos, respectivamente.
Salida
La salida debe contener líneas
la
ésima de esas líneas debe contener la cantidad de vuelos seguros diferentes que se pueden agregar para que el
ésimo viaje sea óptimo.
Restricciones
Subtareas
Sea el tiempo mínimo de vuelo entre los puntos
y
.
Subtarea | Restricciones Adicionales | Puntos | Dependencias |
---|---|---|---|
Ejemplos
Entrada 1
3
6 9 6
1 2
2 6
4 6 3
1 6 1
5 1 1
4 3 2
3 5 8
5 2 6
2 6 6
1 3 4
6 5 7
3 2 1
3 2
1 2
3 2 1
3 1 2
4 4 2024
2 4
2023 2024
2 3 2021
2 1 2022
4 1 1
4 3 2
Salida 1
3
2
0
En el primer viaje se pueden añadir los vuelos:
En el segundo viaje se pueden añadir los vuelos:
En el tercer viaje no hay forma de hacer que
Comments