Pagini recente » Cod sursa (job #2665050) | Cod sursa (job #2416117) | Cod sursa (job #2137664) | Cod sursa (job #501263) | Cod sursa (job #312513)
Cod sursa(job #312513)
#include<stdio.h>
#define N 1001
#define oo 50000001
int cost[N][N]={0};
bool s[N];
int d[N]={0}, m, n;
void citesc(){
int a, b, c;
scanf("%d", &n);
scanf("%d", &m);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
if(i==j)
cost[i][j]=0;
else
cost[i][j]=oo;
for(int i=1; i<=m;++i){
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
cost[a][b]=c;
}
for(int i=2; i<=n;++i)
d[i]=oo;
}
int minim(){
int a=oo, contor;
for(int i=1; i<=n;++i)
if(s[i]==0)
if(d[i]<a){
contor=i;
a=d[i];
}
return contor;
}
void djk(){
int x;
d[1]=0;
for(int i=1; i<n;++i)
{
x=minim();
s[x]=1;
for(int i=1; i<=n;++i)
if(d[i]>d[x]+cost[x][i])
d[i]=d[x]+cost[x][i];
}
}
int main(){
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
citesc();
djk();
for(int i=2; i<=n;++i){
if(d[i]==oo)
printf("%d ", 0);
else printf("%d ", d[i]);
}
return 0;
}