# Задача 12 — Дейкстра на priority_queue (C++) ```c++ long long shortest_path(int n, const std::vector>& edges, // (u, v, w) int src, int dst); ``` Требования: - рёбра **ориентированные**, вес `w >= 0`, self-loop допустим; вершины `0..n-1`; - вернуть длину кратчайшего пути `src -> dst` (`long long`, веса суммируются до 10^9); - недостижимость → `-1`; `src == dst` → `0`; - вес рёбер 0 допустим (условие применимости Дейкстры — **неотрицательные** веса); - 100 000 вершин и 200 000 рёбер: быстрее 2 секунд. Значит нужна `std::priority_queue` (O((V+E) log V)), а не O(V²) перебор минимума. Подсказки по разбору (после сдачи): «ленивое» удаление устаревших записей из очереди (`if (d != dist[v]) continue;`), почему нельзя Дейкстру с отрицательными рёбрами и когда нужен Беллман–Форд. Проверка: `python3 grade.py 12`. Критерий: все `ok`, сборка без предупреждений.