Cod sursa(job #3260082)

Utilizator BogdanBurescuBogdan Burescu BogdanBurescu Data 30 noiembrie 2024 09:39:19
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <queue>

#define pii pair<int,int>

using namespace std;
long long int n,m,i,j,u,v,curr,p,l,k,val,ok,viz[300005],d[300005],ans,mod=1e9+7;

ifstream cin ("dijkstra.in");
ofstream cout ("dijkstra.out");

string s1,s2;
vector<pair<int,int>>g[300005];
queue<int>q;
priority_queue < pii , vector < pii > , greater < pii > > pq;

void dijk (int st)
{
    for(i=1;i<=n;i++)
        d[i]=1e9;
    d[st]=0;
    pq.push({0,st});
    viz[st]=1;
    while(!pq.empty())
    {
        int curr=pq.top().second;
        pq.pop();
        viz[curr]=1;
        for(i=0;i<g[curr].size();i++)
        {
            int vec=g[curr][i].first;
            int cost=g[curr][i].second;
            if(d[curr]+cost<d[vec] && viz[vec]==0)
            {
                d[vec]=d[curr]+cost;
                pq.push({d[vec],vec});
            }
        }
    }
}


int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>m;
    for(i=1;i<=m;i++)
    {
        cin>>u>>v>>val;
        g[u].push_back({v,val});
    }
    dijk(1);
    for(i=2;i<=n;i++)
    {
        if(d[i]==1e9)
            cout<<0<<' ';
        else
        cout<<d[i]<<' ';
    }
    return 0;
}