Cod sursa(job #2978462)

Utilizator Bogdan-AlxDinca Bogdan-Alexandru Bogdan-Alx Data 13 februarie 2023 19:43:57
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
#define inf 1000000002
int n,m,x,y,viz[50002],start[50002],nrc,cost,d[50002];
struct nod
{
    int vecin,cost,leg;
}L[250002];

int main()
{
    fin>>n >> m;
    for(int i=1;i<=m;i++)
    {
        fin>>x>>y >> cost;
        L[i].vecin=y;
        L[i].cost=cost;
        L[i].leg=start[x];
        start[x]=i;
    }
    for (int j = 1; j <= n; ++j) {
        d[j]=inf;
    }
    d[1]=0;
    for (int i = 1; i <= n; ++i) {
        int vmin=inf;
        int p=0;
        for (int j = 1; j <=n ; ++j) {
            if(viz[j]==0 && d[j]<vmin){
                vmin=d[j];
                p=j;
            }
        }
        if(vmin==inf) break;
        viz[p]=1;
        // incerc sa fac inbunatatiri ale costurilor d ale vecinilor lui p
        for (int j = start[p]; j!=0; j=L[j].leg) {
            int y=L[j].vecin;
            if(viz[y]==0 && d[y]>d[p]+L[j].cost){
                d[y]=d[p]+L[j].cost;
            }
        }
    }
    for (int i = 2; i <= n; ++i) {
        if(d[i]==inf){
            fout << "0 ";
        }else fout << d[i] << " ";
    }

    return 0;
}