Cod sursa(job #2964964)

Utilizator ioana.cCaprariu Ioana ioana.c Data 14 ianuarie 2023 10:47:58
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

int d[200005], pred[200005];
vector <pair<int,int> > v[200005], ans;
priority_queue <pair<int,int> > q;
bool inq[200005];

int main(){
    int n, m;
    fin >> n >> m;
    for(int i=2; i<=n; i++)
        d[i] = 2e9;
    for(int i=1; i<=m; i++){
        int x, y, c;
        fin >> x >> y >>c;
        v[x].push_back({y,c});
    }
    q.push({0,1});
    while(!q.empty()){
        int x=q.top().second;
        //fout << x <<' ';
        q.pop();
        if(inq[x])
           continue;
        inq[x]=true;
        for(int k=0; k<v[x].size(); k++){
            pair <int,int> i;
            i=v[x][k];
            int y=i.first, c=i.second;
            //fout << x << ' ' << y << '\n';
            if(!inq[y] && d[y]>c+d[x]){
               d[y] = c+d[x];
               q.push({-c-d[x],y});
            }
        }
    }
    for(int i=2; i<=n; i++)
        {
            if(d[i] == 2e9)
               d[i] = 0;
            fout << d[i] << ' ';
        }
    return 0;
}