Pagini recente » Cod sursa (job #1325192) | Cod sursa (job #1830879) | Cod sursa (job #1675472) | Cod sursa (job #2130770) | Cod sursa (job #3303872)
#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int>>graph[50005];
priority_queue<pair<int,int>>q;
int dist[50005];
int main()
{
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m;
cin>>n>>m;
for(int i=1; i<=m; i++)
{
int a,b,c;
cin>>a>>b>>c;
graph[a].push_back({b,c});
}
for(int i=2; i<=n; i++)
dist[i]=INT_MAX;
q.push({0,1});
while(!q.empty())
{
int nod=q.top().second, d=-q.top().first;
q.pop();
if(d>dist[nod])
continue;
for(int i=0; i<graph[nod].size(); i++)
{
int new_dist=d+graph[nod][i].second;
int new_nod=graph[nod][i].first;
if(new_dist<dist[new_nod])
{
dist[new_nod]=new_dist;
q.push({-dist[new_nod], new_nod});
}
}
}
for(int i=2; i<=n; i++)
{
if(dist[i]==INT_MAX)
cout<<0<<" ";
else
cout<<dist[i]<<" ";
}
return 0;
}