Cod sursa(job #3263244)

Utilizator vlad231Gheorghica Istrate David vlad231 Data 14 decembrie 2024 01:29:10
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m;
int dist[50006];
const int INF = 1<<30;
vector<pair<int, int>> v[50005];
int main()
{
    fin>>n>>m;
    int x, y, z;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>z;
        v[x].push_back({y, z});
    }
    for(int i = 1;i<=n;i++){
        dist[i] = INF;
    }
        set<pair<int, int>> s;
    dist[1] = 0;
    s.insert({0, 1});
    while(!s.empty()){
        int node = (*s.begin()).second;
        int d = (*s.begin()).first;
        s.erase(s.begin());
        if(d!= dist[node]){
            continue;
        }
        for(auto it: v[node]){
            if(dist[it.first]> d+ it.second){
                dist[it.first] = d + it.second;
                s.insert({dist[it.first], it.first});
            }
        }
    }
        for(int i = 2; i<=n; i++)
    {
        if(dist[i] == INF)
        {
            fout<<0<<" ";
        }
        else
        {
            fout<<dist[i]<<" ";
        }
    }
    return 0;
}