求单源最短路径两顶点最短距离(BFS)

摘要:
//(矩阵)求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1intFirstNeighbor1{ifreturn-1;for{ifreturni;}return-1;}//(矩阵)假设G中顶点y是顶点x的一个相邻结点,返回除y之外顶点x的下一个临接点的定点号,若y是最后一个顶点则返回-1intNextNeighbor1{ifreturn-1;for{ifreturni;}return-1;}//求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1(邻接表)intFirstNeighbor2{ifreturn-1;if(G.adjList[x].firstarc!
//(矩阵)求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1
int FirstNeighbor1(MGraph G,intx){
    if(x >= MaxVertexNum) return -1;
    for(int i = 0;i < MaxVertexNum;++i){
        if(G.Edge[x][i] >= 0 && G.Edge[x][i] <MaxDis )
            returni;
    }
    return -1;
}

//(矩阵)假设G中顶点y是顶点x的一个相邻结点,返回除y之外顶点x的下一个临接点的定点号,若y是最后一个顶点则返回-1
int NextNeighbor1(MGraph G,int x,inty){
    if(x >= MaxVertexNum) return -1;
    for(int i = y+1;i < MaxVertexNum;++i){
        if(G.Edge[x][i] >= 0 && G.Edge[x][i] <MaxDis )
            returni;
    }
    return -1;
}

//求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1(邻接表)
int FirstNeighbor2(ALGraph G,intx){
   if(x >= G.vertices) return -1;
   if(G.adjList[x].firstarc!=NULL)
       return G.adjList[x].firstarc->adjvex;
   else
       return -1;
}
//(邻接表)假设G中顶点y是顶点x的一个相邻结点,返回除y之外顶点x的下一个临接点的定点号,若y是最后一个顶点则返回-1
int NextNeighbor2(ALGraph G,int x,inty){
    ENode * temp =G.adjList[x].firstarc;
    while(temp!=NULL){
        if(temp->adjvex ==y)
            break;
        elsetemp = temp->nextarc;
    }
    if(temp == NULL ||temp->nextarc ==NULL)
        return -1;
    else
        return temp->nextarc->adjvex;
}

//求单源最短路径 (BFS) 两顶点最短距离
void BFS_Mix_Distance(Graph G,int u,intv){
    //d[i]表示从u到i结点的最短路径
    for(int i=0;i<G.vertices;i++){
        d[i]=MAXNUM;
    }
    intw;
    InitQueue(Q);
    visit(u);
    visited[u]=true;
    d[u]=0;
    EnQueue(Q,u);
    while(!isEmpty(Q)){
        DeQueue(Q,u);
        for(w=FirstNeighbor(G,u);w>=0;w=NextNeighbor(G,u,w)){
            if(visited[w]==false){
                visit(w);
                visited[w]=true;
                d[w]=d[u]+1;
                EnQueue(Q,w);
            }
        }
    }
}

免责声明:文章转载自《求单源最短路径两顶点最短距离(BFS)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【译】Java SE 14 Hotspot 虚拟机垃圾回收调优指南Windows 无法启动MongoDB服务 错误1067:进程意外终止下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章