Cod sursa(job #2690742)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 25 decembrie 2020 15:43:48
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include<cstdio>
const int N=50001;
int n,m,i,t,p,u,d[N],w[N],*s[N],*v[N],a[5*N],b[5*N],e[5*N],q[5*N];
int main()
{
	freopen("dijkstra.in","r",stdin),freopen("dijkstra.out","w",stdout),scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++)
    	scanf("%d%d%d",a+i,b+i,e+i),w[a[i]]++;
	for(i=1;i<=n;d[i]=N,w[i++]=0)
		s[i]=new int[w[i]],v[i]=new int[w[i]];
	for(i=1;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);
}