Pagini recente » Cod sursa (job #845650) | Cod sursa (job #1025220) | Cod sursa (job #2348161) | Cod sursa (job #913149) | Cod sursa (job #976184)
Cod sursa(job #976184)
#include<cstdio>
#include<vector>
#include<iterator>
#include<utility>
#define NMAX 50000+5
#define oo 1<<30
using namespace std;
int N,M,a,b,c,i,j;
int D[NMAX];
bool viz[NMAX];
vector<pair<int,int> > V[NMAX];
vector<pair<int,int> >::iterator it;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&N,&M);
for(;M;--M)
{
scanf("%d%d%d",&a,&b,&c);
V[a].push_back(make_pair(b,c));
}
for(i=2;i<=N;i++) D[i]=oo;
for(it=V[1].begin();it!=V[1].end();it++) D[it->first]=it->second;
viz[1]=1;
for(i=1;i<=N-1;i++)
{
c=oo; a=oo;
for(j=1;j<=N;j++) if(!viz[j] && D[j]<c) {c=D[j]; a=j;}
viz[a]=1;
for(it=V[a].begin();it!=V[a].end();it++)
if(D[a]+it->second < D[it->first]) D[it->first]=D[a]+it->second;
}
for(i=2;i<=N;i++) printf("%d ",D[i]);
return 0;
}