#include using namespace std; #define INF INT_MAX typedef pair iPair; void adjListGraph(vector > adj[], int s, int d, int w){ // undirected graph adj[s].push_back({d, w}); adj[d].push_back({s, w}); } void dijkstras(vector > adj[], int V, int src){ priority_queue, greater > pq; // min heap vector dist(V, INF); // create a vector for distances and initialize all distances as infinite (INF) pq.push({0, src}); dist[src]=0; while(!pq.empty()){ int u=pq.top().second; // pair pq.pop(); for(auto x: adj[u]){ int v=x.first; // pair int w=x.second; if(dist[v]>dist[u]+w){ dist[v]=dist[u]+w; pq.push({dist[v], v}); } } } cout<>v>>e; vector > adj[v]; while(e--){ int s,d,w; cin>>s>>d>>w; adjListGraph(adj,s,d,w); } dijkstras(adj, v, 0); // source is 0 }