Pagini recente » Cod sursa (job #917167) | Cod sursa (job #2500273) | Cod sursa (job #2569586) | Cod sursa (job #379437) | Cod sursa (job #280874)
Cod sursa(job #280874)
#include <stdio.h>
#define dim 7
#define inf 9999
int n,m,a[dim][dim];
int viz[dim],cost[dim],par[dim];
void next();
//--------------
void tip()
{
freopen("dijkstra.out","w",stdout);
for (int i=2;i<=n;i++)
printf("%d ",cost[i]);
}
//--------------
void cit()
{
int x,y,val;
freopen("dijkstra.in","r",stdin);
scanf("%d %d",&n,&m);
for (int i=0;i<m;i++)
{
scanf("%d %d %d",&x,&y,&val);
a[x][y]=val;
a[y][x]=val;
}
}
//-------------
void djk(int nod)
{
viz[nod]=1;
for (int i=1;i<=n;i++)
{
if ((cost[i]>cost[nod]+a[nod][i])&&(a[nod][i]!=0)&&(viz[i]==0))
{
cost[i]=cost[nod]+a[nod][i];
par[i]=nod;
}
}
next();
}
//-------------
void next()
{
int urm,dmin=inf;
for (int i=1;i<=n;i++)
{
if ((viz[i]==0)&&(dmin>cost[i]))
{
urm=i;
dmin=cost[i];
}
}
if (dmin!=inf)
djk(urm);
}
//-------------
void ini(int start)
{
for (int i=1;i<=n;i++)
{
if (a[start][i]!=0)
{
cost[i]=a[start][i];
par[i]=start;
}
else
cost[i]=inf;
}
viz[start]=1;
cost[start]=0;
par[start]=0;
next();
}
//-------------
int main()
{
cit();
ini(1);
tip();
return 0;
}