Cod sursa(job #1344678)

Utilizator ElViolatoreNimei Altul ElViolatore Data 16 februarie 2015 21:51:30
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");


int gasit [101],distanta[101],matrice [101][101],vizitat [101],n;

void citire ()
{
    int m,x,y,z;
    f>>n>>m;
    int i;
    for (i=1;i<=n;i++)
    {
        f>>x>>y>>z;
        matrice [x][y] = z;
    }
}

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

void dijkstra ()
{
    int i,j,minim,punct;
    for (i=2;i<=n;i++)
        distanta [i] = matrice [1][i];
    distanta [1] = 0;

    for (i=2;i<=n;i++)
    {
        minim = 100001;
        for (j=1;j<=n;j++)
            if (gasit [j] ==0 && distanta [j] )
                if (minim > distanta [j])
                {
                    minim = distanta [j];
                    punct = j;
                }

        gasit [punct] = 1;

        for (j=2;j<=n;j++)
        {
            int valoare = matrice [punct][j] + distanta [punct];
            if (vizitat [j] == 0)
            {
                if ((valoare < distanta [j] || distanta [j] == 0) && matrice [punct][j] >0)
                    distanta [j] = valoare;
            }
        }

    }
}



int main()
{
    citire ();
    dijkstra ();
    afisare ();
    return 0;
}