Cod sursa(job #1835676)

Utilizator leeviiTempfli Levente2 leevii Data 27 decembrie 2016 12:25:08
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,kezd,tav[2005],ut[2005],a[2005][2005],p,i,f,g,h;
bool latott[101];

int minimum()
{
    int mn=9999,k=0;
    for(int i=1;i<=n;i++)
    {
        if(tav[i]<mn && latott[i]==0)
        {
            mn=tav[i];
            k=i;
        }
    }
    return k;
}

int main()
{
    int m;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>f>>g>>h;
        a[f][g]=h;
        a[g][f]=h;
    }

    kezd=1;
    for(i=1;i<=n;i++)
        tav[i]=999999;
    tav[kezd]=0;

    while(1)
    {
        p=minimum();
        if(p!=0)
        {
            latott[p]=1;
            for(i=1;i<=n;i++)
            {
                if(latott[i]==0 && a[p][i]>0 && tav[i]>tav[p]+a[p][i])
                {
                    tav[i]=tav[p]+a[p][i];
                    ut[i]=p;
                }
            }
        }
        else break;
    }

    for(i=2;i<=n;i++)
    {
        if(tav[i]!=999999) fout<<tav[i]<<" ";
        else fout<<0;
    }

}