Pagini recente » Cod sursa (job #2752309) | Monitorul de evaluare | Cod sursa (job #1368881) | Cod sursa (job #1517193) | Cod sursa (job #502454)
Cod sursa(job #502454)
#include<stdio.h>
#include<string.h>
#define Nmax 10001
#define INF 0x3f3f3f3f
int N, M, A[Nmax][Nmax], D[Nmax];
char U[Nmax];
void dijkstra() {
int i, min, nod;
memset(D,INF,sizeof(D));
D[1]=0;
while(1) {
min=INF; nod=-1;
for(i=1; i<=N; i++)
if(!U[i] && D[i]<min) {
min=D[i];
nod=i;
}
if(min==INF)
break;
U[nod]=1;
for(i=1; i<=N; i++)
if(D[i]>D[nod]+A[nod][i])
D[i]=D[nod]+A[nod][i];
}
}
int main() {
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int i, j, c;
scanf("%d %d",&N,&M);
memset(A,INF,sizeof(A));
while(M--) {
scanf("%d %d %d",&i,&j,&c);
A[i][j]=c;
}
dijkstra();
for(i=2; i<=N; i++)
printf("%d ",D[i]);
printf("\n");
return 0;
}