Cod sursa(job #2969722)

Utilizator amunnumeVlad Patrascu amunnume Data 23 ianuarie 2023 17:10:51
Problema Distante Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>

using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,i,j,f[105],a[105][105],m,d[105],x,y,dist,mx=999999999,poz,mi,k,p;
int main()
{
    fin >>n>>p;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
        {
            if (i==j) a[i][j]=0;
            else a[i][j]=mx;
        }
    }
    while(fin >>x>>y>>dist)
    {
        a[x][y]=dist;
    }
    d[p]=0;
    d[0]=mx;
    f[p]=1;
    for (i=1; i<=n; i++)
    {
        f[i]=0;
        d[i]=a[p][i];
    }
    for (k=1; k<n; k++)
    {
        poz=0;
        mi=mx;
        for (i=1; i<=n; i++)
        {
            if (d[i]!=0 && d[i]!=mx && f[i]==0 &&d[i]<mi)
            {
                mi=d[i];
                poz=i;
            }
        }
        f[poz]=1;
        for (i=1; i<=n; i++)
        {
            if (f[i]==0 && d[poz]+a[poz][i]<d[i]) d[i]=d[poz]+a[poz][i];
        }
    }
    for (i=1; i<=n; i++)
    {
        if (d[i]==mx) fout <<"-1 ";
        else fout <<d[i]<<" ";
    }
    return 0;
}