#include #include #include #include #include #include #include #include using namespace std; typedef pair PII; typedef vector VI; typedef vector> VII; typedef vector> VVI; typedef vector>> VVP; void Dijkstra(VVP &adjw, int start, VI &dist, VI &prev) { int n=adjw.size(); dist=VI(n,-1); prev=VI(n,-1); VI p(n,-1); // -1=neobiskan, -2=koncan p[start]=0; while (1) { // najmanjsa potencialna razd. int x=-1; for (int i=0;i=0) { if (x==-1 || p[i]=0 && d, greater> pq; dist[start]=0; pq.push({0,start}); while (!pq.empty()) { auto [d,x]=pq.top(); pq.pop(); if (d!=dist[x]) continue; for (auto [y,w] : adjw[x]) { int dy=dist[x]+w; if (dist[y]==-1 || dy> n >> m; VVP adjw(n); for (int i=0;i> a >> b >> c; adjw[a].push_back({b,c}); adjw[b].push_back({a,c}); } vector dist,prev; Dijkstra(adjw,0,dist,prev); for (int i=0;i