Suche nach dem kürzesten Pfad in einem Graphen mit Klassen
PHP
Hard
classes
Aufgabe «Suche nach dem kürzesten Pfad in einem Graphen mit Klassen»
Implementieren Sie die Klasse Graph zur Darstellung eines gewichteten gerichteten Graphen. Die Klasse muss die Methoden addEdge(int $from, int $to, int $weight) zum Hinzufügen einer Kante und shortestPath(int $start, int $end) zur Ermittlung des kürzesten Pfades vom Knoten $start zum Knoten $end mithilfe des Dijkstra-Algorithmus enthalten. Wenn kein Pfad existiert, soll die Methode -1 zurückgeben. Es wird garantiert, dass die Kantengewichte positiv sind, die Anzahl der Knoten 1000 nicht überschreitet und die Anzahl der Kanten bis zu 10000 beträgt.
Eingabeformat
In der ersten Zeile werden durch Leerzeichen getrennt N (Anzahl der Knoten) und M (Anzahl der Kanten) angegeben. Danach folgen in M Zeilen die Kanten: from to weight. In der letzten Zeile werden start und end angegeben.
Ausgabeformat
Eine ganze Zahl – die minimalen Kosten des Pfades von start nach end, oder -1, wenn kein Pfad vorhanden ist.
Beispiele
Beispiel 1
EINGABE
10
AUSGABE
87
Beispiel 2
EINGABE
3 2
1 2 5
2 3 10
1 3
AUSGABE
15
Beispiel 3
EINGABE
1
AUSGABE
0
Beispiel 4
EINGABE
2 1
1 2 7
2 1
AUSGABE
-1
main.php