Cod sursa(job #2884674)

Utilizator robertbujor21_Robert Bujor robertbujor21_ Data 4 aprilie 2022 16:26:44
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");

int a[101][101], n,p,i,j,c;
int d[101], s[101], t[101], minim, poz, Max=1000000;
int main () {
    in>>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] = Max;
    while (in>>i>>j>>c)
        a[i][j] = c;
    s[p] = 1;
    for (i=1; i<=n; i++) {
        d[i] = a[p][i];
        if (i!=p)
            if (d[i]<Max)
                t[i] = p;
    }
    for (i=1; i<=n-1; i++) {
        minim = Max;
        for (j=1; j<=n; j++)
            if (s[j]==0)
                if (d[j] < minim) {

                    minim = d[j];
                    poz = j;
                }
        s[poz] = 1;
        for (j=1; j<=n; j++)
            if (s[j]==0)
                if (d[j] > d[poz]+a[poz][j]) {
                        d[j] = d[poz] + a[poz][j];
                        t[j] = poz;
                }
    }
    for (i=1; i<=n; i++)
        if (d[i]<1000000)
            out<<d[i]<<" ";
        else
            out<<-1<<" ";
        return 0;
}