Cod sursa(job #3184392)

Utilizator Alexinfo22Rusu Luca Alexinfo22 Data 15 decembrie 2023 18:45:24
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define infinit 100000000;
int n,p,x,y,c,v[101],d[101],a[101][101],poz,mini;
int main()
{   fin>>n>>p;
    while(fin>>x>>y>>c)
        a[x][y]=c;
    for(int i=1;i<=n;i++)
    {   if(a[p][i])
        d[i]=a[p][i];
        else d[i]=infinit;
    }

    d[p]=0;
    v[p]=1;
    for(int i=1;i<n;i++)
    {   mini=infinit;
    for(int k=1;k<=n;k++)
        if(v[k]==0 && d[k]<mini)
        {mini=d[k];
        poz=k;
        }

         if(mini==100000000)
             break;
             else{
        v[poz]=1;
        for(int j=1;j<=n;j++)
            if(v[j]==0 && d[j]>a[poz][j]+d[poz] && a[poz][j])
                d[j]=a[poz][j]+d[poz];

    }
    }
     for(int i=1;i<=n;i++)
        if(d[i]!=100000000)
        fout<<d[i]<<' ';
     else fout<<-1<<' ';
    return 0;
}