Cod sursa(job #1338261)

Utilizator DragodanAlexandraDragodan Alexandra DragodanAlexandra Data 9 februarie 2015 22:03:02
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("djikstra.in");
ofstream g("djikstra.out");
int n,x0,p,c[100][100],d[100],pre[100],m[100];
#define inf 100000;

void initializare()
{
    int i,a,b,c1,j;
    f>>n>>p;
    x0=1;
    for(i=1;i<=n;i++)
       for(j=i+1;j<=n;j++)
            c[i][j]=c[j][i]=inf;

    for(i=1;i<=p;i++)
{
    f>>a>>b>>c1;
    c[a][b]=c1;
}
    for(i=1;i<=n;i++)
        d[i]=c[x0][i],pre[i]=x0;
    pre[x0]=0;
    m[x0]=1;
}

void afisare()
{
    int i;
    for(i=2;i<=n;i++) g<<d[i]<<" ";
}

int main()
{
    int vfmin,dmin,i,j;
    initializare();
    for(j=1;j<=n;j++)
    {
        dmin=inf;
        for(i=1;i<=n;i++)
            if(!m[i] && dmin>d[i])
            {
                dmin=d[i];
                vfmin=i;
            }

    m[vfmin]=1;
    for(i=1;i<=n;i++)
        if(!m[i] && d[i]>dmin+c[vfmin][i])
        {
        pre[i]=vfmin;
        d[i]=dmin+c[vfmin][i];
        }

    }

afisare();

}