Cod sursa(job #3285810)

Utilizator myrra678ana ana myrra678 Data 13 martie 2025 14:47:49
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <vector>
#include <queue>

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

const int INF=2000000001;

struct muchie
{
    int y,c;
};

struct cmp
{
    bool operator()(const muchie &a, const muchie &b)
    {
        return a.c>b.c;
    }
};

int n,m;
int dist[50001],viz[50001];
vector <muchie>lista[50001];
priority_queue <muchie,vector<muchie>,cmp>pq;

void dijkstra(int nod)
{
    dist[nod]=0;
    pq.push({nod,0});
    while(!pq.empty())
    {
        muchie nod=pq.top();
        pq.pop();
        if(viz[nod.y]==0)
        {for(auto urm:lista[nod.y])
        {
            if(dist[urm.y]>dist[nod.y]+urm.c)
            {
                dist[urm.y]=dist[nod.y]+urm.c;
                pq.push({urm.y,dist[nod.y]+urm.c});
            }
        }
            viz[nod.y]=1;
        }
    }
}


int main()
{
    int i,x,y,c;
    cin>>n>>m;
    for(i=1;i<=m;i++)
    {
        cin>>x>>y>>c;
        lista[x].push_back({y,c});
        
    }
    for(i=1;i<=n;i++)
        dist[i]=INF;
        
    dijkstra(1);
    for(i=2;i<=n;i++)
    {
        if(dist[i]==INF)
            cout<<0<<" ";
        else cout<<dist[i]<<" ";
    }
    
    return 0;
}