void
Unweight( Table T) /*Assume T is initialized*/
{
int CurrDist; /*当前无权路径长,即边数*/
Vertex V,W; /*V顶点,W顶点(两个变量)*/
for ( CurrDist = 0; CurrDist < NumVertex; CurrDist++) /*无权路径长的最小值是0,最大值是定点数减1*/
{
for each vertex V
if ( !T[V].Known && T[V].Dist ==CurrDIst ) /*同时满足V顶点不为已知,起点到V顶点的距离等于当前起点至顶点V的无权路径长*/
{
T[V].Known = True; /*将V顶点放入已知顶点的集合中*/
for each W adjacent to V /*有向图中邻接点沿着箭头指向方向*/
if ( T[W].Dist == Infinity)
{
T[W].Dist = CurrDist+1;
T[W].Path = V;
}
}
}
最坏的情况:v1------>v2------>v3------>v4------>v5------>v6------>v7------>v8------>v9