Pagini recente » Cod sursa (job #933683) | Cod sursa (job #2418299) | Cod sursa (job #1427888) | Cod sursa (job #247634) | Cod sursa (job #486704)
Cod sursa(job #486704)
#include<cstdio>
#define inf 50000000
using namespace std;
struct nod { int info,c;
nod* lg;
} *vf[501],*r;
int use[501];
int main()
{ freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m,i,a,b,c,D[501],min;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c);
r=new nod;
r->info=b;
r->c=c;
r->lg=vf[a];
vf[a]=r;
}
for(i=1;i<=n;i++) D[i]=inf;
for(r=vf[1];r;r=r->lg) D[r->info]=r->c;
use[1]=1;
while(1) { min=inf;
for(i=1;i<=n;i++) if(!use[i]&&D[i]<min)min=D[i],a=i;
if(min==inf)break;
use[a]=1;
for(r=vf[a];r;r=r->lg) if(D[r->info]>D[a]+r->c)D[r->info]=D[a]+r->c;
}
for(i=2;i<=n;i++) if(D[i]==inf)printf("0 ");
else printf("%d ",D[i]);
return 0;
}