Búsqueda del camino más corto en un grafo utilizando clases
PHP
Hard
classes
Tarea «Búsqueda del camino más corto en un grafo utilizando clases»
Implemente la clase Graph para representar un grafo dirigido ponderado. La clase debe contener los métodos addEdge(int $from, int $to, int $weight) para agregar una arista y shortestPath(int $start, int $end) para encontrar el camino más corto desde el vértice $start hasta $end utilizando el algoritmo de Dijkstra. Si no existe un camino, el método debe devolver -1. Se garantiza que los pesos de las aristas son positivos, el número de vértices no supera 1000 y el número de aristas llega hasta 10000.
Formato de entrada
En la primera línea, separados por espacio, se indican N (número de vértices) y M (número de aristas). Luego, en M líneas se indican las aristas: from to weight. En la última línea se indican start y end.
Formato de salida
Un número entero — el costo mínimo del camino desde start hasta end, o -1 si no hay camino.
Ejemplos
Ejemplo 1
ENTRADA
10
SALIDA
87
Ejemplo 2
ENTRADA
3 2
1 2 5
2 3 10
1 3
SALIDA
15
Ejemplo 3
ENTRADA
1
SALIDA
0
Ejemplo 4
ENTRADA
2 1
1 2 7
2 1
SALIDA
-1
main.php