#include <bits/stdc++.h>
#include <iostream>
#include <utility>
#include <vector>
#include <queue>
#include <limits>
using namespace std;
void D(int N, vector<pair<int,int>> adj[N]; int source){
vector<int> dist(V,1000000);
dist[source] = 0;
priority_queue<pair<int,int>, vector<pair<int,int>> , greater<pair<int,int>>> pq;
pq.push({0,source});
while(pq.empty() != 0) {
int u = pq.top().second;
int d = pq.top().first;
pq.pop();
for(int i = 0; i < adj[u].size(); i++){
int v = adj[u][i].first;
int weight = adj[u][i].second;
if(dist[adj[u][i].first] > pq.top().first + adj[u][i].second){
dist[adj[u][i].first] = pq.top().first + adj[u][i].second;
pq.push({dist[adj[u][i].first], adj[u][i].first});
}
}
}
int main(){
int N,M; //số đỉnh, cạnh
cin >> N >> M;
vector<pair<int,int>> adj;
for (int i = 0; i < M; i++) {
int a, b, c;
cin >> a >> b >> c;
adj[a].push_back({b,c}); // Nếu đồ thị là vô hướng
adj[b].push_back({a,c});
}
int source;
cin >> source;
D(N, adj, source);
return 0;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter