Cod sursa(job #420361)

Utilizator maditzaaciuca madalina maditzaa Data 18 martie 2010 20:58:18
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream.h>
#include <iostream.h>
int a[1010][1010],viz[1010],d[1010];

int n,i,j,min,k,x,c,m;

const int inf=32000;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");


void citire (){
	f>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(i!=j)
				a[i][j] = inf;
	while(f>>i>>j>>c)
		a[i][j] = c;
}


void dijkstraa(){
	for(i = 1;i <= n; i++){
		d[i] = a[1][i];
	}
	
	
	viz[1] = 1;
	
	for(k = 1 ;k <n; k++){
		min = inf;
		for(i = 1;i <= n ;i++)
			if(d[i] < min && ! viz[i]){
				min = d[i];
				j = i;
			}
			viz[j] = 1;
			for(i = 1;i <= n;i++)
				if(!viz[i] && d[i]>d[j] + a[j][i]){
					d[i] = d[j] + a[j][i];
					
				}
	}
	for(i = 1; i <=n; i++){
		if(i!=1)
			if(d[i] != inf){
				
				g<<d[i]<<" ";
			}
			
	}
}
int main(){
	citire();
	
	dijkstraa();
	
	return 0;
}