Cod sursa(job #3122644)

Utilizator 2080Cristian 2080 Data 19 aprilie 2023 19:48:46
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

string name ="dijktra";

ifstream fin(name+".in");
ofstream fout(name + ".out");


vector<vector<pair<long long,long long>>> grph = vector<vector<pair<long long,long long>>>(1000);
vector<long long> d = vector<long long>(1000,2e10);
vector<long long> vis = vector<long long>(1000,0);
queue<long long> q;
void dijktra(long long st){
    d[st] = 0;
    q.push(st);
    while (!q.empty()){
        long long h = q.front();
        q.pop();
        vis[h] = 1;
        for (const auto &item: grph[h]){
            if(vis[item.first]==0){
                q.push(item.first);
                if(d[h]+item.second<=d[item.first])
                    d[item.first] =  d[h]+item.second;
            }

        }


    }

}


int main(){
    long long n,m;
   fin>>n>>m;

    for(long long i=0;i<m;++i){
        long long x,y,z;
        fin>>x>>y>>z;
        grph[x].push_back(make_pair(y,z));
    }

    dijktra(1);

    for (long long i=2;i<=n;i++) {
        fout<<d[i]<<" ";

    }

}