Cod sursa(job #2799740)

Utilizator luciabianca2405Tudorache Lucia Bianca luciabianca2405 Data 13 noiembrie 2021 13:36:37
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
using namespace std;
const int oo=20000000, Nmax=50000;
vector<pair<int,int>>g[Nmax+5];
int n;
int D[Nmax+5];
vector<bool>Use;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
void read()
{
    int m,x,y,Cost;
    fin>>n>>m;
    Use=vector<bool>(n+1);
    for(int i=1; i<=m; i++)
    {
        fin>>x>>y>>Cost;
        g[x].push_back(make_pair(y,Cost));
    }
}
void dijkstra()
{
    for(int i=2; i<=n; i++)
        D[i]=oo;
    for(int i=1; i<=n; i++)
    {
        int Nod, Min=oo;
        for(int i=1; i<=n; i++)
            if(D[i]<Min&&Use[i]==0)
                Min=D[i],Nod=i;
        Use[Nod]=1;
        for(int i=0; i<(int)g[Nod].size(); i++)
        {
            int Vecin=g[Nod][i].first,Cost=g[Nod][i].second;
            D[Vecin]=min(D[Vecin], D[Nod]+Cost);
        }
    }
}
void print()
{
    for(int i=2; i<=n; i++)
    {
        if(D[i]==oo)
            D[i]=0;
        fout<<D[i]<<' ';
    }
    fout<<'\n';
}
int main()
{
    read();
    dijkstra();
    print();
    return 0;
}