void Dijkstra(AdjMatrix N,int v,int D[],int p[])
{
int S[MAX];
int mindistance,temp;
int i,j,u;
for(i=1;i<=N.vexnum;i++)
{
D[i]=N.edges[v][i];
S[i]=0;
if(INDINITY==N.edges[v][i])
p[i]= -1;
else
p[i]=v;
}
S[v]=1;
for(i=1;i<=N.vexnum;j++)
{
mindistance=MAXWEIGHT;
for(j=1;j<=N.vexnum;j++)
{
if(0==S[j]&&D[j]<mindistance)
{
mindistance=D[j];
u=j;
}
}
S[u]=1;
for(j=1;j<=N.vexnum&&0==S[j];j++)
{
temp=D[u]+N.edges[u][j];
if(D[j]>temp)
{
D[j]=temp;
p[j]=u;
}
}
}
}
迪杰斯特拉算法
最新推荐文章于 2023-12-25 16:02:09 发布