Cod sursa(job #3208962)

Utilizator DumitrescuADumitrescuA DumitrescuA Data 1 martie 2024 16:51:21
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int inf=1<<30;
int n,m,p;
bitset<100005>viz;
vector<vector<pair<int,int>>>adj(100005);
vector<int>d(100005);
void dijkstra(int nod){
    priority_queue<pair<int,int>>pq;
    d[nod]=0;
    pq.push({0,nod});
    while(!pq.empty()){
        int x=pq.top().second;
        pq.pop();
        if(viz[x])continue;
        viz[x]=1;
        for(auto it : adj[x]){
            int nodnou=it.first;
            int cost=it.second;
            if(d[nodnou]>d[x]+cost){
                d[nodnou]=d[x]+cost;
                pq.push({-d[nodnou],nodnou});
            }
        }
    }
}
int main() {
    fin>>n>>m;
    for(int i=1;i<=m;i++){
        int x,y,d;
        fin>>x>>y>>d;
        adj[x].push_back({y,d});
    }
    for(int i=1;i<=n;i++)d[i] =inf;
    dijkstra(1);
    for(int i=2;i<=n;i++){
        if(d[i]==inf)fout<<0<<' ';
        else fout << d[i] << ' ';
    }
    return 0;
}