Cod sursa(job #2421023)

Utilizator SchopenhauerIordache Stefan Schopenhauer Data 13 mai 2019 20:52:54
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include<fstream>
#include<iostream>

using namespace std;

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

int a[50001][500001], n, p, i, j, c;
int d[50001], s[50001], t[50001], mini, poz, maxi = 10000000;

int main()
{
    f >> 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] = maxi;

    while(f >> 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] < maxi)
                t[i] = p;
    }
    for(i = 1; i <= n - 1; i++)
    {
        mini = maxi;
        for(j = 1; j <= n; j++)
            if(s[j] == 0)
                if(d[j] < mini)
                {
                    mini = 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] < 10000000)
            g << d[i] << " ";
        else g << -1 << " ";
        return 0;
}