Pagini recente » Cod sursa (job #958884) | Cod sursa (job #600554) | Cod sursa (job #1268167) | Cod sursa (job #1769616) | Cod sursa (job #1964004)
#import<bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int N=50005,M=2e9;
set<pair<int,int> >q;
set<pair<int,int> >::iterator w;
vector<int>ls[N],lc[N];
int n,m,x,y,c,i,l,dist[N];
int main(){
for(f>>n>>m;m--;){
f>>x>>y>>c;ls[x].push_back(y);lc[x].push_back(c);}
for (i=2;i<=n;dist[i++]=M);
q.insert(make_pair(0,1));
while(!q.empty()){
l=ls[x=q.begin()->second].size();q.erase(q.begin());
for(i=0;i<l;i++){
y=ls[x][i],c=lc[x][i];
if(dist[x]+c<dist[y]){
if((w=q.find(make_pair(dist[y],y)))!=q.end())
q.erase(w);
q.insert(make_pair(dist[y]=dist[x]+c,y));}}
}
for(i=2;i<=n;g<<((c=dist[i++])==M?0:c)<<' ');
}