Cod sursa(job #3286841)

Utilizator popescubogdanPopescu Bogdan popescubogdan Data 14 martie 2025 18:50:38
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

vector< pair<int,int> >M[50001];
int d[50001];

void bfs()
{
    queue< int > Q;

    Q.push(1);

    while(Q.empty()!=1)
    {
        int nod=Q.front();
        for(vector< pair<int,int> > :: iterator it=M[nod].begin();it!=M[nod].end();it++)
        {
            int copil=(*it).first;
            int lun=(*it).second;

            int sum=lun + d[nod];

            if(d[copil]==0) ///daca nu am ajuns la nodul asta din 1 inca
            {
                d[copil]=sum;
                Q.push(copil);
            }

            else if(d[copil]>sum)
            {
                d[copil]=sum;
                Q.push(copil);
            }

        }
        Q.pop();
    }
}

int main()
{
    int n,m,a,b,c;
    fin>>n>>m;
    for(int i=0;i<m;i++)
    {
        fin>>a>>b>>c;
        M[a].push_back({b,c});
    }

    bfs();

    for(int i=2;i<=n;i++)
    {
        fout<<d[i]<<" ";
    }
    return 0;
}