Cod sursa(job #155751)

Utilizator DorinOltean Dorin Dorin Data 12 martie 2008 09:50:32
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
# include <stdio.h>

# define input "bellman.in"
# define output "dijkstra.out"

# define max 1001
# define INF 128000

struct muchie
{
       int x,y,c;
}e[250001];

int i,j,n,d[50001],x,y,c,k,m;
int ok,nr;

int main()
{
	freopen(input, "r", stdin);
	freopen(output, "w", stdout);

    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
       d[i] = INF;
    for(i=1;i<=m;i++)
        scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].c);

    d[1] = 0;
    
    for(ok = nr = 1;ok && nr < n;nr++)
    {
           ok = 0;
           for(k=1;k<=m;k++)
           {
               x = e[k].x;
               y = e[k].y;
               c = e[k].c;
               if(d[y] > d[x]+c)
               {
                   d[y] = d[x]+c;
                   ok = 1;
               }
           }
    }
    for(i=2;i<=n;i++)
        printf("%d ",d[i]==INF?0:d[i]);


	return 0;
}