zoukankan      html  css  js  c++  java
  • 无向图的BFS遍历法

    #include<bits/stdc++.h>
    #define ll long long
    #define maxsize 100100
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    int v,e,num;
    vector<int>g[maxsize];
    int used[maxsize];//有没有用到顶点
    int main()
    {
        while(cin>>v>>e)//v是顶点数,e是边数
        {
            num=0;
            mem(used,0);
            mem(mark,0);
            for(int i=1;i<=e;++i)//输入每一条边的两个端点的编号
            {
                int a,b;
                cin>>a>>b;
                g[a].push_back(b);//双端进入vector
                g[b].push_back(a);
            }
            queue<int>q;
            q.push(1);
            while(!q.empty())
            {
                int top=q.front();
                q.pop();
                used[top]=1;//标记队列的端点已经使用过了,就不必进入队列了
                for(int i=0;i<g[top].size();++i)//枚举所有与top相连的顶点
                {
                    ......
                    int tmp=g[top][i];
                    if(!used[tmp])//如果顶点tmp没有被标记过,就进入队列
                        q.push(tmp);
                    ......
                }
                ......
            }
            ......
            for(int i=0;i<maxsize;++i)
                g[i].clear();//清空vector
        }
        return 0;
    }
  • 相关阅读:
    Java实现分页
    研发技能列表
    shell 函数
    养生
    再谈创新
    写代码注意事项
    排查问题方法
    简历撰写
    jenkins
    架构
  • 原文地址:https://www.cnblogs.com/JJsnow/p/9968776.html
Copyright © 2011-2022 走看看