Cod sursa(job #2403022)

Utilizator bazycristi21Bazavan Cristian bazycristi21 Data 11 aprilie 2019 10:57:27
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");

struct Edge{
    int nod,cost;
};

int main()
{
    int N,M,i,j;
    in>>N>>M;
    vector<vector<Edge>> edge(N+1);
    for(i=1;i<=M;i++)
    {
        int x;
        Edge y;
        in>>x>>y.nod>>y.cost;
        edge[x].push_back(y);
    }
    int inf=(N-1)*20000;
    vector <int> d(N+1,inf);
    vector <int> viz(N+1,0);
    d[1]=0;
    for(i=1;i<=N;i++)
    {
        int minim=inf+1;
        int ind;
        for(j=1;j<=N;j++)
        {
            if(d[j]<minim && viz[j]==0)
            {
                minim=d[j];
                ind=j;
            }
        }
        viz[ind]=1;
        for(auto j: edge[ind])
            if(d[j.nod]>d[ind]+j.cost)
                d[j.nod]=d[ind]+j.cost;
    }
    for(i=2;i<=N;i++)
    {
        if(d[i]==inf)
            out<<"0 ";
        else
            out<<d[i]<<" ";
    }



}