Cod sursa(job #303743)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 10 aprilie 2009 12:06:59
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include<iostream>
#define NMAX 50001
#define MMAX 250001
#define INFI 0x3f3f3f3f
int a[MMAX],b[MMAX],c[MMAX],d[NMAX];
int j,i,m,n;
int main(void)
{
freopen("dijkstra.in","r",stdin);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
	{
	scanf("%d%d%d",&a[i],&b[i],&c[i]);
	}
fclose(stdin);

freopen("dijkstra.out","w",stdout);
                  /*
for(i=1;i<=n;i++)
    {
    for(j=1;j<=v[i];j++)
	   printf("%d ",a[i][j]);
    printf("\n");
    }               */
memset(d, INFI, sizeof(d));
d[1]=0;  
for(i=1;i<n;i++)
    {
    int p=0;
    for(j=1;j<=m;j++)
        {
        if(d[b[j]]>d[a[j]]+c[j])
            {
            d[b[j]]=d[a[j]]+c[j];
            p=1;
            }
		}
	if(p==0) break;
	}
for(i=2;i<=n;i++)
    {
    if(d[i]==INFI) printf("0 ");
    else printf("%d ",d[i]);
    }
printf("\n");
fclose(stdout);
return 0;
}