Pagini recente » Cod sursa (job #1866636) | Cod sursa (job #2665617) | Cod sursa (job #1994228) | Cod sursa (job #615263) | Cod sursa (job #3263209)
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
#include <fstream>
using namespace std;
///1 -> celelalte
vector<vector<pair<long long,long long>>>tabel;
vector<bool>viz;
vector<long long>mini;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
void d(long long nod) {
priority_queue<pair<long long, long long>, vector<pair<long long, long long>>, greater<pair<long long, long long>>> q;
q.push({0, nod});
mini[nod] = 0;
while (!q.empty()) {
auto current = q.top();
q.pop();
long long currentNode = current.second;
if (viz[currentNode]) continue;
viz[currentNode] = true;
for (auto& i : tabel[currentNode]) {
long long vec = i.first;
long long newDist = mini[currentNode] + i.second;
if (newDist < mini[vec] && !viz[vec]) {
mini[vec] = newDist;
q.push({mini[vec], vec});
}
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
long long n,m;
fin>>n>>m;
tabel.resize(n+1);
viz.resize(n+1);
mini.resize(n+1,LLONG_MAX);
for(long long i=1;i<=m;i++){
long long x,y,z;
fin>>x>>y>>z;
tabel[x].push_back({y,z});
}
d(1);
for(long long i=2;i<=n;i++)
fout<<(mini[i] != LLONG_MAX ? mini[i] : 0)<<" ";
return 0;
}