Cod sursa(job #3325316)

Utilizator anca04Bizon Anca anca04 Data 25 noiembrie 2025 12:11:09
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>
#include <queue>
#define INF 99999999
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,n,m,nc,p,x,y,c,cost,vecin,d[250001];
bool incoada[250001];
struct mucie{int v,c;}z,zn;
vector <mucie> b[250001];
struct comparare{
        bool operator()(int x,int y)
        {
            return d[x]>d[y];
        }
                };
priority_queue <int , vector <int> ,comparare > q;
int main()
{
    f>>n>>m;
    for(i=1;i<=m;++i)
    {
        f>>x>>y>>c;
        z.v=y;
        z.c=c;
        b[x].push_back(z);
        z.v=x;
        b[y].push_back(z);
    }
    for(i=1;i<=n;++i)
        d[i]=INF;
    d[1]=0;
    q.push(1);
    incoada[1]=true;
    while(!q.empty())
    {
        nc=q.top();
        q.pop();
        incoada[nc]=false;
        for(i=0;i<b[nc].size();++i)
        {
            vecin=b[nc][i].v;
            cost=b[nc][i].c;
            if(d[vecin]>d[nc]+cost)
            {
                d[vecin]=d[nc]+cost;
                if(!incoada[vecin])
                    q.push(vecin),incoada[vecin]=true;
            }
        }
    }
    for(i=2;i<=n;++i)
        if(d[i]==INF)
        g<<"0"<<' ';
    else
        g<<d[i]<<' ';
    return 0;
}