Cod sursa(job #2433204)

Utilizator TudorChirila11Tudor Chirila TudorChirila11 Data 26 iunie 2019 12:02:31
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define pb push_back
#define st first
#define nd second
#define inf 5000000004
#define ll long long
using namespace std;
ll n, m, i, j, ans[50005], cost, x, y;
priority_queue <pair <int,int > > pq[50005];
void dfs(int nod)
{
    while(!pq[nod].empty())
    {
        pair<int,int> curr=pq[nod].top();
        curr.st=-curr.st;
        ans[curr.nd]=min(ans[curr.nd],ans[nod]+curr.st);
        dfs(curr.nd);
        pq[nod].pop();
    }
}
int main()
{
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    cin>>n>>m;
    for(i=1;i<=n;i++)
        ans[i]=inf;
    ans[1]=0;
    for(i=1;i<=m;i++)
    {
        cin>>x>>y>>cost;
        pq[x].push({-cost,y});
    }
    dfs(1);
    for(i=2;i<=n;i++)
        cout<<ans[i]<<' ';
    return 0;
}