Pagini recente » Cod sursa (job #1193546) | Cod sursa (job #2109783) | Cod sursa (job #1342419) | Cod sursa (job #3285673) | Cod sursa (job #2667053)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,m,d[50001];
struct muchie
{ int nod,cost;
};
bool operator <(muchie a,muchie b)
{ return a.cost>b.cost;
}
vector <muchie> v[50001];
priority_queue <muchie> h;
void dijkstra(int nod)
{ h.push({nod,0});
while(!h.empty())
{ muchie x=h.top();
h.pop();
if(d[x.nod]!=1<<30)
continue;
d[x.nod]=x.cost;
for(auto it: v[x.nod])
if(d[it.nod]>d[x.nod]+it.cost)
h.push({it.nod,d[x.nod]+it.cost});
}
}
int main()
{ in>>n>>m;
for(int i=1;i<=m;i++)
{ int x,y,c;
in>>x>>y>>c;
v[x].push_back({y,c});
}
for(int i=1;i<=n;i++)
d[i]=1<<30;
dijkstra(1);
for(int i=1;i<=n;i++)
if(d[i]==1<<30)
d[i]=0;
for(int i=2;i<=n;i++)
out<<d[i]<<" ";
out<<'\n';
in.close();
out.close();
return 0;
}