Optimización de rutas usando estructuras y cola de prioridades
Swift
Hard
structs
Tarea «Optimización de rutas usando estructuras y cola de prioridades»
Desarrolle una estructura `Route` que represente una ruta con los campos: `startCity` (String), `endCity` (String), `distance` (Int) y `priority` (Int). Implemente la función `optimizeRoutes`, que recibe un arreglo de rutas y devuelve un arreglo de rutas ordenado ascendente por distancia, y en caso de igual distancia, descendente por prioridad. Luego, para cada ruta, imprima su descripción en el formato: "{startCity} -> {endCity}: {distance} km (priority {priority})". Si el arreglo está vacío, imprima "No routes". Utilice solo estructuras y algoritmos de ordenamiento incorporados, sin clases.
Formato de entrada
La primera línea contiene un número entero N (1 ≤ N ≤ 100) — la cantidad de rutas. Luego siguen N líneas, cada una contiene cuatro valores separados por un espacio: startCity (cadena sin espacios, hasta 20 caracteres), endCity (cadena sin espacios, hasta 20 caracteres), distance (número entero de 1 a 10000), priority (número entero de 1 a 100).
Formato de salida
Imprima N líneas, cada una en el formato "{startCity} -> {endCity}: {distance} km (priority {priority})", ordenadas según la regla. Si N=0, imprima "No routes".
Ejemplos
Ejemplo 1
ENTRADA
3
X Y 1000 10
Y Z 500 10
Z X 750 10
SALIDA
Y -> Z: 500 km (priority 10)
Z -> X: 750 km (priority 10)
X -> Y: 1000 km (priority 10)
Ejemplo 2
ENTRADA
1
Start End 1 100
SALIDA
Start -> End: 1 km (priority 100)
main.swift