Dijkstra算法代码模板(C++)
Dijkstra算法的通用实现模板,适用于带非负权重的图,使用优先队列优化(时间复杂度O(E log V)):
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii; // (距离, 节点)
const int INF = 0x3f3f3f3f; // 表示无穷大
void dijkstra(vector<vector<pii>>& graph, vector<int>& dist, int start) {
int n = graph.size() - 1; // 节点数量(1-indexed)
dist.assign(n + 1, INF); // 初始化距离数组
priority_queue<pii, vector<pii>, greater<pii>> pq; // 小顶堆
dist[start] = 0;
pq.push({
0, start});
while (!pq.empty()) {
auto [d, u] = pq.top(