Cod sursa(job #270156)

Utilizator vladbBogolin Vlad vladb Data 3 martie 2009 19:44:57
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

const int max=32000;
int min,poz,s[50000];
int **a;
long d[1000],n,m;

int main()
{   freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    int x,y,z,i,j;
    scanf("%ld%ld",&n,&m);
    a=new int*;
    for(i=1;i<=n;i++)
    {   a[i]=new int [n+1];
	for(j=1;j<=n;j++)
	    a[i][j]=max;
    }
    for(i=1;i<=m;i++)
    {   scanf("%d%d%d",&x,&y,&z);
	a[x][y]=z;
    }
    s[1]=1;
    for(i=1;i<=n;i++)
       d[i]=a[1][i];
    for(i=1;i<n;i++)
    {   min=max;
	for(j=1;j<=n;j++)
	    if(s[j]==0)
		if(d[j]<min) { min=d[j];
			   poz=j;
			 }
	s[poz]=1;
	for(j=1;j<=n;j++)
	 //   if(s[j]==0)
		if(d[j]>d[poz]+a[poz][j])
		   d[j]=d[poz]+a[poz][j];
    }
    for(i=2;i<=n;i++)
       if(d[i]!=max)	printf("%ld ",d[i]);
	else printf("0 ");
    return 0;
}