Pagini recente » Cod sursa (job #73723) | Cod sursa (job #24450) | Cod sursa (job #2755710) | Cod sursa (job #717243) | Cod sursa (job #314657)
Cod sursa(job #314657)
#include<stdio.h>
const int N=1000;
const int inf=100000000;
int n,ap[N],a[N][N],c[N][N],d[N];
void citire();
void dijkstra(int);
int min();
int main (){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
citire();
dijkstra(1);
for(int i=2;i<=n;i++)
if(d[i]!=inf)
printf("%d ",d[i]);
else
printf("0 ");
return 0;
}
void dijkstra(int x){
int i,j,y;
for(i=1;i<=n;++i)
d[i]=inf;
d[x]=0;
for(i=1;i<n;i++){
x=min();
ap[x]=1;
for(j=1;j<=a[x][0];j++){
y=a[x][j];
if(d[y]>d[x]+c[x][j])
d[y]=d[x]+c[x][j];
}
}
}
int min(){
int m,dm=inf;
for(int i=1;i<=n;i++)
if(dm>d[i] && ap[i]==0){
dm=d[i];
m=i;
}
return m;
}
void citire(){
int m,x,y,cost;
scanf("%d%d",&n,&m);
while(m--){
scanf("%d%d%d",&x,&y,&cost);
a[x][++a[x][0]]=y;
c[x][++c[x][0]]=cost;
}
}