Cod sursa(job #2675201)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 21 noiembrie 2020 11:08:31
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>
#include <bitset>
#define INF 2000000000
using namespace std;
int n,m,i,nr,minim,vec,x,y,co,D[50010],nod,cost;
vector < pair<int,int> > L[50010];
bitset <50010> v;
int main () {
    ifstream fin ("dijkstra.in");
    ofstream fout ("dijkstra.out");
    fin>>n>>m;
    while (fin>>x>>y>>co){
        L[x].push_back(make_pair(y,co));
    }
    for (i=2;i<=n;i++){
        D[i]=INF;
    }
    nr=0;
    while (nr<=n){
        minim=INF+1;
        for (i=1;i<=n;i++){
            if (v[i]==0&&D[i]<minim){
                minim=D[i];
                nod=i;
            }
        }
        v[nod]=1;
        nr++;
        for (i=0;i<L[nod].size();i++){
            vec=L[nod][i].first;
            cost=L[nod][i].second;
            if (v[vec]==0){
                if (D[vec]>D[nod]+cost){
                    D[vec]=D[nod]+cost;
                }
            }
        }
    }
    for (i=2;i<=n;i++){
        if (D[i]==INF){
            fout<<"0 ";
        }
        else{
            fout<<D[i]<<" ";
        }
    }
    return 0;
}