zoukankan      html  css  js  c++  java
  • 无向图的深度遍历

    #include<iostream>
    #include<fstream>
    using namespace std;
    int e[100][100];        //无向图图采用邻接矩阵表示,一般的图采用数组,稀疏图可采用vector动态表示节约资源
    int book[100];            //采用book数组记录节点是否已经访问过
    int n,m;                //n个顶点,m条边
    void dfs(int cur)
    {
        cout<<cur<<" ";
        for(int i=1;i<=n;i++)
        {
            if(e[cur][i]==1&&book[i]==0)
            {
                book[i]=1;
                dfs(i);
            }
        }
    }
    int main()
    {
        fstream f("1.txt");
        //f>>n>>m;
        cin>>n>>m;
        //初始化n维数组
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                if(i==j)
                    e[i][j]=0;
                else
                    e[i][j]=99;
            }
        }
        //输入图的信息
        int x,y;
        for(int i=1;i<=m;i++)
        {
            //f>>x>>y;
            cin>>x>>y;
            e[x][y]=1;
            e[y][x]=1;
        }
        memset(book,0,sizeof(int));
        int count=0;
        for(int i=1;i<=n;i++)
        {
            if(book[i]==0)
            {
                book[i]=1;
                dfs(i);
                count++;
                cout<<endl;
            }
        }
        cout<<"该图共有"<<count<<"个连通分量"<<endl;
    }

    //记忆技巧,主循环里面三个for,前两个用来初始化图,后一个遍历每个连通分量
    //关于dfs只需维护一个cur参数即可,对于点V来说,只要遍历它的周围即可(即一个for即可)

  • 相关阅读:
    HTML5实现音频播放
    百度编辑器UEditor常用设置函数大全
    .Net一般处理程序来实现用户名的验证
    软件设计师13-数据库设计
    软件设计师12-数据流图
    百度云BCC安装WordPress镜像
    Java获取客户端真实IP地址
    软件设计师11-面向对象技术
    百度云BCC主机宝镜像
    软件设计师10-系统开发模型
  • 原文地址:https://www.cnblogs.com/hutao886/p/5162009.html
Copyright © 2011-2022 走看看