Cod sursa(job #2883819)

Utilizator raul41917raul rotar raul41917 Data 1 aprilie 2022 20:55:27
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fi("dijkstra.in");
ofstream fo("dijkstra.out");
int n,m;
vector <pair<int,int> >V[50001];
int D[50001];
int viz[50001];
queue <int>coada;
void BFS(int first)
{
    coada.push(first);
    while(!coada.empty())
    {
        int x=coada.front();
        coada.pop();
        viz[x]=1;
        for(int i=0;i<V[x].size();i++)
        {
            int vecin=V[x][i].first;
            viz[vecin]=1;
            if(viz[vecin]==0)
            {
                coada.push(vecin);
                if(vecin!=1 && D[vecin]==0)
                    D[vecin]=D[x]+V[x][i].second;
                else
                    D[vecin]=min(D[vecin],D[x]+V[x][i].second);
            }
        }
    }
}
int main()
{
    fi>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y,C;
        fi>>x>>y>>C;
        V[x].push_back(make_pair(y,C));
    }
    viz[1]=1;
    BFS(1);
    for(int i=2;i<=n;i++)
        fo<<D[i]<<" ";
    return 0;
}