Cod sursa(job #2768845)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 august 2021 13:01:49
Problema Algoritmul lui Dijkstra Scor 90
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<stdlib.h>
#define N 50001
int n,m,i,d[N],t,p,u,w[N],*s[N],*v[N],a[5*N],b[5*N],e[5*N],q[23*N];
int main()
{
    freopen("dijkstra.in","r",stdin),freopen("dijkstra.out","w",stdout),scanf("%d%d",&n,&m);
    for(i=0;i<m;++i)
        scanf("%d%d%d",a+i,b+i,e+i),++w[a[i]];
    for(i=1;i<=n;w[i++]=0)
        d[i]=N,s[i]=(int*)malloc(4*w[i]),
        v[i]=(int*)malloc(4*w[i]);
    for(i=0;i<m;i++)
        s[a[i]][w[a[i]]]=b[i],v[a[i]][w[a[i]]++]=e[i];
    for(d[1]=0,q[u++]=1;p<u;)
        for(t=q[p++],i=0;i<w[t];i++)
            if(d[s[t][i]]>d[t]+v[t][i])
                d[s[t][i]]=d[t]+v[t][i],q[u++]=s[t][i];
    for(i=2;i<=n;i++)
        printf("%d ",d[i]%N);
    return 0;
}