Pagini recente » Cod sursa (job #2101546) | Cod sursa (job #799153) | Cod sursa (job #2049574) | Haba Matei Ionut | Cod sursa (job #3333111)
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <string>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, m, p, dis[100001];
bool inCoada[100001]={false};
vector<pair<int, int>>v[100001];
priority_queue< pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>> >pq;
const int INF=1e9;
int main(){
int i, e, s, cont=0, loc, a, b, c, d, u;
f >> n >> m;
for(i=1; i<=m; ++i){
f >> a >> b >> c;
v[a].push_back({b, c});
v[b].push_back({a, c});
}
dis[1]=0;
for(i=2; i<=n; ++i)
dis[i]=INF;
pq.push({0, 1});
while(!pq.empty()){
d=pq.top().first;
u=pq.top().second;
pq.pop();
if(d>dis[u])continue;
for(const auto vecin:v[u]){
int nod_v=vecin.first;
int cost_v=vecin.second;
if(dis[u]+cost_v < dis[nod_v]){
dis[nod_v]=dis[u]+cost_v;
pq.push({dis[nod_v], nod_v});
}
}
}
for(i=2; i<=n; ++i)
if(dis[i]!=INF)g << dis[i] << " ";
return 0;
}