Cod sursa(job #3355778)

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

#define cin fin
#define cout fout
#define int long long
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*-1;
        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});
            }
        }
    }

}
signed main()
{
   cin>>n>>m;
   vc.resize(n+1);
   for(int i=1;i<=n;i++)
    rez[i]=5000000005ll;
   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;
}