Cod sursa(job #2752866)

Utilizator Apetrei2004Apetrei Alex Apetrei2004 Data 19 mai 2021 20:52:39
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#define INF 1000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,s,a[105][105],d[105],F[105];
int main()
{   f>>n>>s;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(i!=j) a[i][j]=INF;
    for(int i,j,c;f>>i>>j>>c;) a[i][j]=c;
    for(int j=1;j<=n;j++) {F[j]=0; d[j]=a[s][j];}
    F[s]=1; d[s]=0; d[0]=INF;
    for(int k=1;k<n;k++)
    {   int pmin=0;
        for(int i=1;i<=n;i++)
            if(F[i]==0 and d[i]<d[pmin]) pmin=i;
        if(pmin)
        {   F[pmin]=1;
            for(int j=1;j<=n;j++)
                if(F[j]==0 and d[j]>d[pmin]+a[pmin][j])
                    d[j]=d[pmin]+a[pmin][j];
        }
    }
    for(int i=1;i<=n;i++)
        if(d[i]==INF) g<<"-1 ";
            else g<<d[i]<<" ";
    g.close();
    f.close();
    return 0;
}