Cod sursa(job #1291396)

Utilizator marian98Horodnic Gheorghe Marian marian98 Data 12 decembrie 2014 19:11:25
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<iostream>
#include<fstream>
#include<vector>
#define INF 99999
using namespace std;
int x,start;
long C[20000][20000],M[50001],d[50001],n,m;
void initializare()
{
    ifstream f("dijkstra.in");
    f>>n>>m;
    for (unsigned i=1;i<=n;i++)
    {
        for (unsigned j=1;j<=n;j++)
            C[i][j]=C[j][i]=INF;
    }
    for (unsigned i=1;i<=m;i++)
    {
        unsigned x,y,c;
        f>>x>>y>>c;
        C[x][y]=C[y][x]=c;
    }
    for (unsigned i=1;i<=n;i++)
    {
        d[i]=C[1][i];
    }
    M[1]=1;
}
int main()
{
    int i,VfMin,j;
    int dMin;
    initializare();
    ofstream f1("dijkstra.out");
    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])
        {
            d[i]=dMin+C[VfMin][i];
        }
    }

    for (i=2;i<=n;i++)
        if (d[i]==INF) f1<<0<<" ";
        else f1<<d[i]<<" ";
    return 0;
}