int dis[105]; bool vis[105]; priority_queue<pair<int, int> > pq; void dijkstra(int s, int n) { while(!pq.empty()) pq.pop(); for(int i = 1; i <= n; ++i) { dis[i] = 0x3f3f3f3f; vis[i] = 0; } dis[s] = 0; pq.push({-dis[s], s}); while(!pq.empty()) { int u = pq.top().second; pq.pop(); if(vis[u]) continue; vis[u] = 1; for(int i = 0; i < G[u].size(); ++i) { int v = G[u][i].first, w = G[u][i].second; if(!vis[v] && dis[v] > dis[u] + w) { dis[v] = dis[u] + w; pq.push({-dis[v], v}); } } } }
来源:https://www.cnblogs.com/Inko/p/11715302.html