Cod sursa(job #312537)

Utilizator andyciupCiupan Andrei andyciup Data 6 mai 2009 12:04:27
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>
#define N 50006
#define M 250009
#define oo 50000001
int cost[N][N]={0};
bool s[N];
int d[N]={0}, m, n, deg[N]={0};
void citesc(){
	int a, b, c;
	for(int i=1; i<=m;++i){
		scanf("%d", &a);
		scanf("%d", &b);
		scanf("%d", &c);
		deg[a]++;
	}
}
//.....

}

void djk(){
	int x=1;
	int p=q=1;
	coada[q++]=1;
	s[1]=true;
	while(p!=q){
		x=coada[p++];
		s[x]=false;
		for(int i=1; i<=deg[x] ; ++i)
			if(d[x]+cost[x][i]<d[a[x][i]])
			{
				d[a[x][i]]=d[x]+cost[x][i];
				if(!s[a[x][i]])
				{
					coada[q++]=a[x][i];
					s[a[x][i]]=true;
				}
			}
	}
}
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;
}