Cod sursa(job #2577887)

Utilizator TheSeekerRobert Cristian Dobra TheSeeker Data 10 martie 2020 07:59:28
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#define x first
#define y second
#define inf 2147483647
using namespace std;

ifstream fin ("dijkstra.in");
ofstream fout("dijkstra.out");

int n,m,i,a,b,c,minim,nod,ok[50010],d[50010];
vector< pair< int, int > > L[50010];
unsigned int q;

int main(){
    fin>>n>>m;
    for (i=1;i<=m;i++){
        fin>>a>>b>>c;
        L[a].push_back(make_pair(b,c));
        L[b].push_back(make_pair(a,c));
    }
    for (i=2;i<=n;i++)
        d[i]=inf;
    while (true){
        minim=inf;
        for (i=1;i<=n;i++)
            if (!ok[i] && minim>d[i]){
                minim=d[i];
                nod=i;
            }
        if (minim==inf)
            break;
        ok[nod]=1;
        for (q=0;q<L[nod].size();q++)
            if (!ok[L[nod][q].x] && d[L[nod][q].x]>d[nod]+L[nod][q].y)
                d[L[nod][q].x]=d[nod]+L[nod][q].y;
    }
    for (i=2;i<=n;i++)
        if (d[i]==inf)
            fout<<"0 ";
        else
            fout<<d[i]<<" ";
    fin.close();
    fout.close();
    return 0;
}