Cod sursa(job #3268485)

Utilizator Andrei24543Andrei Hulubei Andrei24543 Data 15 ianuarie 2025 14:43:32
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include<bits/stdc++.h>

using namespace std;

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

const int oo = 2000000000;
int n, m;
vector<pair<int, int>> L[50001];
int d[50001] , viz[50001];

void Dijkstra(int p)
{
    int i, k, costMin, cost;
    for (i = 1; i <= n; i++)
        d[i] = oo;
    d[p] = 0;
    for (int pas = 1; pas <= n; pas++)
    {
        costMin = oo;
        k = 0;
        for (i = 1; i <= n; i++)
            if (costMin > d[i] && viz[i] == 0)
            {
                costMin = d[i];
                k = i;
            }
        if (costMin == oo) return;
        viz[k] = 1;
        for (auto e : L[k])
        {
            i = e.first;
            cost = e.second;
            if (d[i] > d[k] + cost)
                d[i] = d[k] + cost;
        }
    }
}

int main()
{
    fin >> n >> m;
    for (int i = 0; i < m; i++)
    {
        int A, B, C;
        fin >> A >> B >> C;
        L[A].push_back({B, C});
    }
    Dijkstra(1);
    for (int i = 2; i <= n; i++)
        if (d[i] == oo) fout << 0 << " ";
        else  fout << d[i] << " ";
    return 0;
}