Cod sursa(job #2692870)

Utilizator MihclerioVladimir Chim Mihclerio Data 4 ianuarie 2021 01:55:23
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.37 kb
#include<bits/stdc++.h>

#define int long long
#define all(a) (a).begin(), (a).end()

#define fr first
#define sc second
#define pb push_back
#define mp make_pair
#define pii pair<int, int>

const int mod=1e9+7;
const int N=2e5+3;
const int inf=1e16+3;

using namespace std;

void test()
{
    ifstream in("dijkstra.in");
    ofstream out("dijkstra.out");

    int n, m;
    in>>n>>m;

    vector<pii> v[n+1];
    for(int i = 0; i < m; i++)
    {
        int a, b, c;
        in>>a>>b>>c;

        v[a].push_back(make_pair(b,c));
    }

    vector<int>viz(n+1), p(n+1), d(n+1, inf);

    d[1]=0;

    for(int i = 1; i <= n; i++)
    {
        int nod = -1;

        for(int j = 1; j <= n; j++)
            if(!viz[j] && (nod == -1 || d[j] < d[nod]))
                nod = j;

        if (d[nod] == inf)
            break;

        viz[nod] = 1;

        for(auto it:v[nod])
        {
            if(d[nod]+it.second < d[it.first])
            {
                d[it.first] = d[nod]+it.second;
                p[it.first] = nod;
            }
        }
    }

    for(int i = 2;i <= n; i++)
        if(d[i]==inf)
            out << 0; else
        out << d[i] << " ";

}

int32_t main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int t=1;
    //cin>>t;

    while(t--) {
        test();
    }

    return 0;
}