Cod sursa(job #2977958)

Utilizator AffectiveSmile2Mihnea Matea AffectiveSmile2 Data 12 februarie 2023 18:07:51
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int INF=999999999;
int n,m,d[50001];
struct muchie
{
    int y,cost;
    bool operator<(const muchie &m) const
    {
        return cost>m.cost;
    }
};
priority_queue <muchie> Q;
vector <muchie> G[50001];
void Dijkstra(int nod)
{
    int cost;
    d[nod]=0;
    Q.push({nod,0});
    while(!Q.empty())
    {
        muchie crt=Q.top();
        Q.pop();
        if(crt.cost>d[crt.y])
            continue;
        for(muchie m:G[crt.y])
        {
            cost=d[crt.y]+m.cost;
            if(d[m.y]>cost)
            {
                d[m.y]=cost;
                Q.push({m.y,cost});
            }
        }
    }
}
int main()
{
    int x,y,w,i;
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>w;
        G[x].push_back({y,w});///se adauga muchia cu costul w de la x la y
    }
    for(i=1;i<=n;i++)
        d[i]=INF;
    Dijkstra(1);
    for(i=2;i<=n;i++)
        if(d[i]!=INF)
            g<<d[i]<<' ';
        else g<<0<<' ';
}