Cod sursa(job #3241870)

Utilizator Dragos__1_1Dragos Antohi Dragos__1_1 Data 5 septembrie 2024 13:20:31
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra2.in");
ofstream g("dijkstra2.out");
long long  n,m,p,i,j,a,b,cost,nod,nod2;
vector<pair<long long,long long>>adjlist[100005];
set<pair<long long,long long>>s;
long long d[100005],M[100005];
int main()
{   f>>n>>m;
    for (i=1;i<=m;i++){
        f>>a>>b>>cost;
        adjlist[a].push_back({b,cost});
    }
    p=1;
    for (i=1;i<=n;i++)d[i]=9123372036854775807;
    d[p]=0;
    s.insert({0,p});
    while (!s.empty()){
        nod=s.begin()->second;
        s.erase(s.begin());
        for (i=0;i<adjlist[nod].size();i++){
            if (1ll*adjlist[nod][i].second+d[nod]<1ll*d[adjlist[nod][i].first]){
                s.erase(make_pair(d[adjlist[nod][i].first] , adjlist[nod][i].first));
                d[adjlist[nod][i].first] = adjlist[nod][i].second+d[nod];
                s.insert(make_pair(d[adjlist[nod][i].first] , adjlist[nod][i].first));
            }
        }

    }
    for (i=2;i<=n;i++)
        if (d[i]!=9123372036854775807)g<<d[i]<<' ';
        else g<<0<<' ';
    return 0;
}