Cod sursa(job #3366031)

Utilizator Iulya10Toader Iulia Iulya10 Data 28 septembrie 2026 18:12:50
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
#define INF 1e9
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,m,x,y,cost,minim,p,viz[50005],d[50005];
vector<pair<int,int>> a[50005];
void dijkstra(int start)
{
    for(int i=1;i<=n;i++)
    {
        d[i]=INF;
    }
    d[start]=0;
    for(int i=1;i<=n;i++)
    {
        minim=INF;
        p=-1;
        for(int j=1;j<=n;j++)
        {
            if(viz[j]==0&&d[j]<minim)
            {
                minim=d[j];
                p=j;
            }

        }
        if(minim==INF) break;
            viz[p]=1;
            for(auto v:a[p])
            {
                if(d[v.first]>d[p]+v.second)
                    d[v.first]=d[p]+v.second;
            }

    }
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y>>cost;
        a[x].push_back({y,cost});
    }
    dijkstra(1);
    for(int i=2;i<=n;i++)
    {
        if(d[i]==INF) fout<<0<<" ";
        else fout<<d[i]<<" ";
    }
    return 0;
}