Cod sursa(job #2459238)

Utilizator anamariatoaderAna Toader anamariatoader Data 22 septembrie 2019 11:48:12
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
#include <climits>

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

int n,m,i,j,x,y,c,d[50005],Min,poz;
bool viz[50005];
struct arc{
    int v,c;
};
vector <arc> g[50005];

int main(){
    fin>>n>>m;
    for(i=1;i<=m;i++){
        fin>>x>>y>>c;
        g[x].push_back({y,c});
    }
    for(i=2;i<=n;i++)
        d[i]=INT_MAX;
    for(i=1;i<=n-1;i++){
        Min=INT_MAX;
        for(j=1;j<=n;j++)
            if(!viz[j] && d[j]<Min){
                Min=d[j];
                poz=j;
            }
        viz[poz]=1;
        for(j=0;j<g[poz].size();j++){
            int nod=g[poz][j].v;
            int cost=g[poz][j].c;
            if(d[nod]>d[poz]+cost&&viz[nod]==0)
                d[nod]=d[poz]+cost;
        }
    }
    for(i=2;i<=n;i++)
        if(d[i]==INT_MAX)
         fout<<0<<' ';
        else
         fout<<d[i]<<' ';
    return 0;
}