Cod sursa(job #2690842)
| Utilizator | Data | 26 decembrie 2020 10:57:48 | |
|---|---|---|---|
| Problema | Algoritmul lui Dijkstra | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include<cstdio>
const int I=1<<30,N=50001,M=250001;
int a[M],b[M],c[M],d[N],n,k,o=1,i,j,c,m;
int main()
{
freopen("dijkstra.in","r",stdin),freopen("dijkstra.out","w",stdout),scanf("%d%d",&n,&m);
for(i=2;i<=n;i++)
d[i]=I;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a[i],&b[i],&c[i]);
if(a[i]==1)
d[b[i]]=c[i];
}
while(!o)
for(o=i=1;i<=m;i++)
if(d[b[i]]>d[a[i]]+c[i])
d[b[i]]=d[a[i]]+c[i],o=0;
for(i=2;i<=n;i++)
printf("%d ",d[i]==I?0:d[i]);
}
