Cod sursa(job #2446645)

Utilizator TudorChirila11Tudor Chirila TudorChirila11 Data 10 august 2019 10:40:41
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
#define NMAX 50005
#define INF 2000000000
using namespace std;
typedef long long ll;
ll n, m, i, j, x, y, c, ans[NMAX], a, b;
vector<pair<int,int>>v[NMAX], vi[NMAX];
priority_queue <pair<int,int>> q;
bool viz[NMAX];
void fast()
{
    //ios_base::sync_with_stdio(false);
    //cin.tie();
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
}
int main()
{
    fast();
    cin>>n>>m;
    for(i=1;i<=m;i++)
    {
        cin>>x>>y>>c;
        v[x].pb({y,c});
    }
    ans[1]=0;
    for(i=2;i<=n;i++)
        ans[i]=INF;
    q.push({1,ans[1]});
    while(!q.empty())
    {
        a=q.top().st;
        int d1=q.top().nd;
        viz[a]=0;
        q.pop();
        for(auto i:v[a])
        {
            b=i.st;
            c=i.nd;
            if(ans[b]>ans[a]+c)
            {
                ans[b]=ans[a]+c;
                if(!viz[b])
                {
                    viz[b]=1;
                    q.push({b,ans[b]});
                }
            }
        }
    }
    for(i=2;i<=n;i++)
        cout<<ans[i]<<' ';
    return 0;
}