Pagini recente » Cod sursa (job #1812294) | Cod sursa (job #1480566) | Cod sursa (job #1554455) | Cod sursa (job #2827330) | Cod sursa (job #1360990)
#include<cstdio>
using namespace std;
#define INF 9999999
int n,m,a[5002][5002],v[5002],u[5002];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int i,j,x,y,k,start,stop;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&k);
a[x][y]=a[y][x]=k;
}
m=n;
for(i=1;i<=n;i++)
if(a[i][start])
v[i]=a[i][start];
else
v[i]=INF;
start=1;
v[start]=0;
u[start]=1;
k=start;
while(m)
{
for(i=1;i<=n;i++)
if(a[i][k])
{
if(a[i][k]+v[k]<v[i])
v[i]=a[i][k]+v[k];
}
x=0;
v[x]=INF;
for(i=1;i<=n;i++)
if(v[i]<v[x]&&!u[i]&&v[i]>0)
{
v[x]=v[i];
k=i;
}
u[k]=1;
m--;
}
for(i=2;i<=n;i++)
printf("%d ",v[i]);
return 0;
}