Cod sursa(job #2377203)

Utilizator iuliandraceaDracea Iulian-Ilie iuliandracea Data 8 martie 2019 23:20:26
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,p,i,j,c,k,a[105][105],d[105],v[105],infinit,vmin;
int main()
{
    fin>>n>>p;
    infinit=10000000;
    for(i=1;i<=n;i=i+1)
    {
        d[i]=infinit;
    }
    d[p]=0;
    for(i=1;i<=n;i=i+1)
    {
        for(j=1;j<=n;j=j+1)
        {
            a[i][j]=infinit;
        }
        a[i][i]=0;
    }
    while(fin>>i>>j>>c)
    {
        a[i][j]=c;
    }
    for(k=1;k<=n;k=k+1)
    {
        vmin=infinit;
        for(i=1;i<=n;i=i+1)
        {
            if(vmin>d[i] && v[i]==0)
            {
                vmin=d[i];
                j=i;
            }
        }
        for(i=1;i<=n;i=i+1)
        {
            if(v[i]==0 && d[i]>vmin+a[j][i])
            {
                d[i]=vmin+a[j][i];
            }
        }
        v[j]=1;
    }
    for(i=1;i<=n;i=i+1)
    {
        if(d[i]==infinit)
        {
            fout<<"-1 ";
        }
        else
        {
            fout<<d[i]<<" ";
        }
    }
    fin.close();
    fout.close();
    return 0;
}