zoukankan      html  css  js  c++  java
  • 求单源最短路径两顶点最短距离(BFS)

    //(矩阵)求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1
    int FirstNeighbor1(MGraph G,int x){
        if(x >= MaxVertexNum) return -1;
        for(int i = 0;i < MaxVertexNum;++i){
            if(G.Edge[x][i] >= 0 && G.Edge[x][i] < MaxDis )
                return i;
        }
        return -1;
    }
    
    //(矩阵)假设G中顶点y是顶点x的一个相邻结点,返回除y之外顶点x的下一个临接点的定点号,若y是最后一个顶点则返回-1
    int NextNeighbor1(MGraph G,int x,int y){
        if(x >= MaxVertexNum) return -1;
        for(int i = y+1;i < MaxVertexNum;++i){
            if(G.Edge[x][i] >= 0 && G.Edge[x][i] < MaxDis )
                return i;
        }
        return -1;
    }
    
    //求图G中顶点x的第一个临接点,如果有返回其下标,否则返回-1(邻接表)
    int FirstNeighbor2(ALGraph G,int x){
       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,int y){
        ENode * temp = G.adjList[x].firstarc;
        while(temp!=NULL){
            if(temp->adjvex == y)
                break;
            else
                temp = temp->nextarc;
        }
        if(temp == NULL ||temp->nextarc == NULL)
            return -1;
        else
            return temp->nextarc->adjvex;
    }
    
    //求单源最短路径 (BFS) 两顶点最短距离
    void BFS_Mix_Distance(Graph G,int u,int v){
        //d[i]表示从u到i结点的最短路径
        for(int i=0;i<G.vertices;i++){
            d[i]=MAXNUM;
        }
        int w;
        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);
                }
            }
        }
    }
  • 相关阅读:
    Postman安装出错.NET Framework 4.5 failed to install
    给小白的资源
    windows update自启动解决方法
    Fragment简介及使用
    samba修复
    我的Android知识结构图——20200507停止更新,后续通过标签或分类继续完善结构图
    Android_适配器(adapter)之BaseAdapter
    Android_适配器(adapter)之SimpleAdapter
    Android_适配器(adapter)之ArrayAdapter
    Linux部分场景非常有用的命令集1_chattr&ldd&xargs&screen&ssh&磁盘&du
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/12109944.html
Copyright © 2011-2022 走看看