Module: Algorithme de Dijkstra


Problem

8/14

Algorithme de Dijkstra dans l'ensemble O(M logN) c : Start (C++)

Theory Click to read/hide

Puisque le comportement asymptotique de l'implémentation naïve de l'algorithme de Dijkstra est : \(O(n^2 + m)\), alors à mesure que le nombre de sommets augmente, la vitesse de travail devient insatisfaisante.
 Diverses structures de données peuvent être utilisées pour l'amélioration : tas de Fibonacci, ensembles set ou une file d'attente prioritairepriority_queue. 
Prenons un exemple avec set, par conséquent, l'asymptotique finale est : \(O(n log (m))\) , détails.

Problem

On vous donne un graphique pondéré orienté. Trouver la distance la plus courte entre un sommet donné et un autre.
 
Entrée
La première ligne contient trois nombres : N, M, S et F (1≤ N≤ 100, 1≤ S, F≤ N), où N – nombre de sommets du graphe, M – nombre de côtes,  S– sommet initial, et F – final. Dans les N lignes suivantes, entrez N nombres chacun, n'excédant pas 100, – matrice d'adjacence graphique, où -1 signifie qu'il n'y a pas d'arête entre les sommets et tout nombre non négatif – la présence d'une arête de poids donné. Des zéros sont écrits sur la diagonale principale de la matrice.
 
Sortie
Il est nécessaire d'afficher la distance souhaitée ou -1 s'il n'y a pas de chemin entre les sommets spécifiés.

Exemples
# Entrée Sortie
1 4 4 3 4
3 1 3
1 2 3
2 4 3
3 4 10
9