Cod sursa(job #3277559)

Utilizator tudorhTudor Horobeanu tudorh Data 16 februarie 2025 17:45:36
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct edge
{
    int nod,val;
    bool operator <(const edge a)  const{ return val>a.val;}
};
priority_queue<edge,vector<edge>> q;
bitset <50001> vap;
int dist[50001];
vector<pair<int,int>> v[50001];
void ff(int nod)
{
    q.push({nod,0});
    int distanta;
    while(!q.empty())
    {
        nod=q.top().nod;
        distanta=q.top().val;
        q.pop();
        if(vap[nod])
            continue;
        dist[nod]=distanta;
        vap[nod]=1;
        for(int i=0;i<v[nod].size();i++)
            q.push({v[nod][i].first,distanta+v[nod][i].second});
    }
}
int main()
{
    int n,m,st,dr,val;
    fin>>n>>m;
    for(int i=0;i<m;i++)
    {
        fin>>st>>dr>>val;
        v[st].push_back({dr,val});
    }
    ff(1);
    for(int i=2;i<=n;i++)
        fout<<dist[i]<<' ';
    return 0;
}