Cod sursa(job #2645337)

Utilizator BereaBerendea Andrei Berea Data 27 august 2020 19:59:22
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <queue>

using namespace std;
int n,m,x,y;
int a,b,c,p,i,v;
int d[30001];
vector<pair<int,int>>g[30001];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> >>q;

void dijkstra()
{
    for (i=1;i<=n;i++) d[i]=(1<<30);
    d[x]=0;
    q.push(make_pair(x,0));
    while (q.size()>0)
    {
        p=q.top().first;
        for (auto a:g[p])
        {
            v=a.first;  //  vecin
            c=a.second;  //  cost
            if (d[v]>d[p]+c)
            {
                d[v]=d[p]+c;
                q.push(make_pair(v,d[v]));
            }
        }
        q.pop();
    }
}

int main()
{
    cin>>n>>m>>x>>y;
    for (i=1;i<=m;i++)
    {
        cin>>a>>b>>c;
        g[a].push_back(make_pair(b,c));
        g[b].push_back(make_pair(a,c));
    }
    dijkstra();
    for (i=1;i<=n;i++) cout<<d[i]<<" ";
}