Cod sursa(job #3355777)

Utilizator VladStroicaStroica Vlad Cristian VladStroica Data 26 mai 2026 09:18:58
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>

#define cin fin
#define cout fout

using namespace std;

ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n,m;
struct cows
{
    int a,b,val;
};
cows lin[300000];
int rez[50005];
vector<vector<int>>vc;
void Bfs(int x)
{
    priority_queue<pair<int,int>>q;
    q.push({0,1});
    while(!q.empty())
    {
        int vl=q.top().first;
        int poz=q.top().second;
        q.pop();
        for(int i=0;i<vc[poz].size();i++)
        {
            int poz2=0;
            if(lin[vc[poz][i]].a==poz)
                poz2=lin[vc[poz][i]].b;
            else
                poz2=lin[vc[poz][i]].a;
            if(rez[poz2]>vl+lin[vc[poz][i]].val)
            {
                rez[poz2]=vl+lin[vc[poz][i]].val;
                q.push({rez[poz2],poz2});
            }
        }
    }

}
int main()
{
   cin>>n>>m;
   vc.resize(m+1);
   for(int i=1;i<=n;i++)
    rez[i]=INT_MAX;
   for(int i=1;i<=m;i++)
   {
       cin>>lin[i].a>>lin[i].b>>lin[i].val;
       vc[lin[i].a].push_back(i);
       vc[lin[i].b].push_back(i);
   }
   rez[1]=0;
   Bfs(1);
   for(int i=2;i<=n;i++)
    cout<<rez[i]<<" ";
    return 0;
}