Cod sursa(job #312497)

Utilizator andyciupCiupan Andrei andyciup Data 6 mai 2009 11:28:05
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#define N 1001
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<=m;++i){
		scanf("%d", &a);
		scanf("%d", &b);
		scanf("%d", &c);
		cost[a][b]=c;
	}
	for(int i=2; i<=n;++i)
		d[i]=100001;
}
int minim(){
	int a=100001, 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(cost[x][i]!=0)
				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)
		printf("%d ", d[i]);
	
	
	return 0;
}