if?(g.edges[v][i]//路徑初始化??
path[i]=v;??
else??
path[i]=-1;??
}??
s[v]=1;??
path[v]=0;??????????????//源點編號v放入s中??
for?(i=0;?i//循環直到所有頂點的最短路徑都求出??
{??
mindis=INF;?????????????????//mindis置最小長度初值??
for?(j=0;?j//選取不在s中且具有最小距離的頂點u??
if?(s[j]==0?&&?dist[j]
{??
u=j;??
mindis=dist[j];??
}??
s[u]=1;?????????????????????//頂點u加入s中??
for?(j=0;?j//修改不在s中的頂點的距離??
if?(s[j]==0)??
if?(g.edges[u][j]
{??
dist[j]=dist[u]+g.edges[u][j];??
path[j]=u;??
}??
}??
Dispath(dist,path,s,g.n,v);?????//輸出最短路徑??
}??
int?main()??
{??
MGraph?g;??
int?A[7][7]=??
{??
{0,4,6,6,INF,INF,INF},??
{INF,0,1,INF,7,INF,INF},??
{INF,INF,0,INF,6,4,INF},??
{INF,INF,2,0,INF,5,INF},??
{INF,INF,INF,INF,0,INF,6},??
{INF,INF,INF,INF,1,0,8},??
{INF,INF,INF,INF,INF,INF,0}??
};??
ArrayToMat(A[0],?7,?g);??
Dijkstra(g,0);??
return?0;??
評論
查看更多