Cod sursa(job #2264643)

Utilizator TavinciStefanescu Octavian Tavinci Data 20 octombrie 2018 10:55:35
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
#define lim 50005
using namespace std;

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

vector <pair<int,int> >G[lim];
queue <int>q;
bool viz[lim];
int cost[lim];
    void parcurgere(int nod)
    {

        viz[nod]=1;
        int noduri=G[nod].size();
        for(int i=0;i<noduri;i++)
        {
            int actualNod=G[nod][i].first;
            if(viz[actualNod]==0)
            {
                cost[actualNod]=cost[nod]+G[nod][i].second;
                parcurgere(actualNod);
            }
            else if(cost[actualNod]>cost[nod]+G[nod][i].second)
            {
                cost[actualNod]=cost[nod]+G[nod][i].second;
                parcurgere(actualNod);
            }
        }
    }

int main()
{
    int n, m, x, y, z;
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>z;
        G[x].push_back({y,z});
    }
    q.push(1);
    parcurgere(1);
    for(int i=2;i<=n;i++)
        fout<<cost[i]<<" ";
    return 0;
}