Cod sursa(job #1471176)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 13:35:45
Problema Algoritmul lui Dijkstra Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<stdlib.h>
int n,m,i,j,k,d[50001],l,t,p,co,w[50001],*s[50001],*v[50001],a[250005],b[250005],e[250005],q[250005],u;
int main() {
	freopen("dijkstra.in","r",stdin),freopen("dijkstra.out","w",stdout),scanf("%d%d",&n,&m);
	for(k=1;k<=m;k++)
    	scanf("%d%d%d",&a[k],&b[k],&e[k]),w[a[k]]++;
	for(i=1;i<=n;w[i++]=0) {
		d[i]=50001;
		s[i]=v[i]=(int*)malloc(w[i]*sizeof(int));
	}
	for(k=1;k<=m;k++)
    	s[a[k]][w[a[k]]]=b[k],v[a[k]][w[a[k]]++]=e[k];
	for(q[u++]=1;p<u;)
    for(t=q[p++],j=0;j<w[t];j++)
    if(d[s[t][j]]>d[t]+v[t][j])
        d[s[t][j]]=d[t]+v[t][j],q[u++]=s[t][j];
	for(i=2;i<=n;i++)
    	printf("%d ",d[i]%50001);
}