/
oop_nust_misis
/
lecture_2
Обзор
Документация
Войти
/
oop_nust_misis
/
lecture_2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
master
algorithms/dijkstra.cpp
45 строк
1 KB
Stanislav Kiselev
Add Code For Lecture 2
20 фев 2025, 09:28
20 фев 2025, 09:28
8f596f2
Код
Авторство
О чём код?
#include <iostream> #include <vector> #include <queue> #include <limits> const int INF = std::numeric_limits<int>::max(); void dijkstra(const std::vector<std::vector<std::pair<int, int>>>& graph, int start) { std::vector<int> dist(graph.size(), INF); std::priority_queue< std::pair<int, int>, std::vector<std::pair<int, int>>, std::greater<> > pq; pq.emplace(0, start); dist[start] = 0; while (!pq.empty()) { auto [d, node] = pq.top(); pq.pop(); if (d > dist[node]) continue; for (auto [neighbor, weight] : graph[node]) { int newDist = dist[node] + weight; if (newDist < dist[neighbor]) { dist[neighbor] = newDist; pq.emplace(newDist, neighbor); } } } for (int d : dist) std::cout << (d == INF ? -1 : d) << " "; } int main() { std::vector<std::vector<std::pair<int, int>>> graph = { {{1, 4}, {2, 1}}, {{3, 1}}, {{1, 2}, {3, 5}}, {} }; dijkstra(graph, 0); }