Cod sursa(job #2324033)

Utilizator maria15Maria Dinca maria15 Data 20 ianuarie 2019 10:39:00
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#include <vector>
#define inf 250000*20000

using namespace std;

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

int n, m, a, b, c, i, d[50001], p, minim, nr, f[50001], vec, dist;
vector<pair<int, int> > v[250001];

int main(){
    fin>>n>>m;
    while(m--){
        fin>>a>>b>>c;
        v[a].push_back(make_pair(b, c));
        v[b].push_back(make_pair(a, c));
    }
    for(i=2;i<=n;i++)
        d[i] = inf;
    d[1] = 0;
    nr = 1;
    while(nr){
        minim = inf;
        nr = 0;
        for(i=1;i<=n;i++)
            if(f[i] == 0){
                nr++;
                if(d[i] < minim){
                    minim = d[i];
                    p = i;
                }
            }
        f[p] = 1;
        for(i=0;i<v[p].size();i++){
            vec = v[p][i].first;
            dist = v[p][i].second;
            if(f[vec] == 0 && d[vec] > d[p] + dist)
                d[vec] = d[p] + dist;
        }
    }
    for(i=2;i<=n;i++)
        if(d[i] == inf)
            fout<<"0 ";
        else
            fout<<d[i]<<" ";
    return 0;
}