Recherche du chemin le plus court dans un graphe à l’aide de classes

PHP Hard classes

Tâche «Recherche du chemin le plus court dans un graphe à l’aide de classes»

Implémentez la classe Graph pour représenter un graphe orienté pondéré. La classe doit contenir les méthodes addEdge(int $from, int $to, int $weight) pour ajouter une arête et shortestPath(int $start, int $end) pour trouver le chemin le plus court du sommet $start au sommet $end à l’aide de l’algorithme de Dijkstra. Si le chemin n’existe pas, la méthode doit retourner -1. Il est garanti que les poids des arêtes sont positifs, que le nombre de sommets ne dépasse pas 1000 et que le nombre d’arêtes est au maximum de 10000.

Format d\ entrée

Sur la première ligne, N (nombre de sommets) et M (nombre d’arêtes) sont donnés séparés par un espace. Sur les M lignes suivantes, les arêtes sont données sous la forme : from to weight. Sur la dernière ligne, start et end sont donnés.

Format de sortie

Un entier — le coût minimal du chemin de start à end, ou -1 si le chemin n’existe pas.

Exemples

Exemple 1

ENTRÉE
10
SORTIE
87

Exemple 2

ENTRÉE
3 2 1 2 5 2 3 10 1 3
SORTIE
15

Exemple 3

ENTRÉE
1
SORTIE
0

Exemple 4

ENTRÉE
2 1 1 2 7 2 1
SORTIE
-1
main.php