Pagini recente » Cod sursa (job #2048834) | Cod sursa (job #2028659) | Istoria paginii utilizator/negreanuvlad | Cod sursa (job #1878211) | Cod sursa (job #3264530)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
typedef long long ll;
vector<pair<int,int>> gf[50001];
priority_queue<pair<ll,int>> pq;
const int inf =10000000;
ll d[50001];
int n,m;
int main () {
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int a,b,c;
fin >> a >> b >> c;
gf[a].push_back({b,c});
}
d[1]=0;
for(int i=2;i<=n;i++) d[i]=inf;
pq.push({0,1});
while(!pq.empty())
{
int nod = pq.top().second;
pq.pop();
for(auto ad : gf[nod])
{
if(d[ad.first] > d[nod]+ad.second)
{
d[ad.first] = d[nod] + ad.second;
pq.push({d[ad.first],ad.first});
}
}
}
for(int i=2;i<=n;i++){
if(d[i]==inf)
fout << 0 << " ";
else
fout << d[i] << " ";
}
return 0;
}