问题在注释中已标明
void Dijkstra(graph &G,int v,float dist[],int prev[])
{ int i, j, u; float min; int *S=new int [G.count];
for(i=0; i<G.count; i++)
{
dist[i]=G.adjmat[v][i]; prev[i]=v; S[i]=0;
}
S[v]=1;
prev[v]=-1;
for(i=1; i<G.count; i++) //为什么要添加这一层循环?
{
min=INF;
for(j=0; j<G.count; j++)
if(!S[j] && dist[j]<min)
{
min=dist[j]; u=j;
}
if(min==INF) break;
S[u]=1;
for(j=0; j<G.count; j++)
if(!S[j] && dist[j]>dist[u]+G.adjmat[u][j])
{
dist[j]=dist[u]+G.adjmat[u][j]; prev[j]=u;
}
}
}