Cod sursa(job #855312)

Utilizator mihai10stoicaFMI - Stoica Mihai mihai10stoica Data 14 ianuarie 2013 21:08:01
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<cstdio>
#include<cstdlib>
int a[20005][20005],min,D[50005];
int n,m,viz[50005];
int pinf=2000000000;
void citire()
{
    FILE *f=fopen("dijkstra.in","r");
    int i,j,A,B,C;
    for(i=1;i<=n;i++)
        for(j=1;j<=i;j++)
            a[i][j]=a[j][i]=pinf;
    fscanf(f,"%d %d",&n,&m);
    for(i=1;i<=m;i++)
    {
        fscanf(f,"%d %d %d",&A,&B,&C);
        a[A][B]=C;
    }
}
int main()
{
    citire();
    int i,k,poz;
    viz[1]=1;
    for(i=2;i<=n;i++)
        D[i]=a[1][i];
    for(k=1;k<=n-1;k++)
    {
        min=pinf;
        for(i=2;i<=n;i++)
            if(viz[i]==0)
                if(D[i]<min)
                {
                    min=D[i];
                    poz=i;
                }
        viz[poz]=1;
        for(i=2;i<=n;i++)
            if(viz[i]==0 && D[i]>D[poz]+a[poz][i])
                D[i]=D[poz]+a[poz][i];
    }
    FILE *g=fopen("dijkstra.out","w");
    for(i=2;i<=n;i++)
    fprintf(g,"%d ",D[i]);
    return 0;
}