Pagini recente » Cod sursa (job #2466950) | Cod sursa (job #2121756) | Cod sursa (job #2340815) | Cod sursa (job #615970) | Cod sursa (job #3205128)
#include <bits/stdc++.h>
using namespace std;
vector <pair <int, int> > a[50005];
int dist [50005];
int n,m,i,x,y,cost,node,next_node,urmatoarea;
ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");
int main(){
in >> n >> m ;
for (i=1;i<=n;i++)
{
dist[i]=INT_MAX;
}
for (i=1;i<=m;i++)
{
in >> x >> y >> cost ;
a[x].push_back({cost,y});
}
set <pair <int,int> > s;
dist[1]=0;
s.insert({0,1});
while (!s.empty())
{
node=s.begin()->second;
s.erase(s.begin());
for (auto next:a[node])
{
next_node=next.second;
cost=next.first;
urmatoarea=dist[node]+cost;
if (urmatoarea<dist[next_node])
{
s.erase({dist[next_node],next_node});
dist[next_node]=urmatoarea;
s.insert({dist[next_node],next_node});
}
}
}
for (i=2;i<=n;i++)
{
if (dist[i]==INT_MAX)out<<"0 ";
else out << dist[i]<<" ";
}
out << "\n";
}