Cod sursa(job #2558840)

Utilizator AlexSasuSasu Alexandru Cristian AlexSasu Data 26 februarie 2020 20:33:06
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n,p,i,j,c,a[101][101],nod,F[101],d[101];
#define INFINIT 1000000000
int main()
{

in>>n>>p;
while (in>>i)
{
    in>>j>>c;
    a[i][j]=c;
}

for (i=1;i<=n;i++)
    d[i]=a[p][i];

for (i=0;i<=n;i++)
    if (d[i]==0)
        d[i]=INFINIT;

F[p]=1;d[p]=0;

for (j=2;j<=n;j++)
{
    nod=0;

    for (i=1;i<=n;i++)
        if (F[i]==0)
            if (d[i]<d[nod])
                nod=i;

    F[nod]=1;

    for (i=1;i<=n;i++)
        if (F[i]==0)
            if (a[nod][i]!=0)
                if (d[nod]+a[nod][i]<d[i])
                    d[i]=d[nod]+a[nod][i];
}

for (i=1;i<=n;i++)
    if (d[i]!=INFINIT)
        out<<d[i]<<" ";
    else
        out<<-1<<" ";

in.close();
out.close();

return 0;}
/*
5 4
1 3 1
2 1 2
4 2 1
4 3 8
5 3 5
5 4 2
---
*/