zoukankan      html  css  js  c++  java
  • [SOJ] connect components in undirected graph

    题目描述:

    输入一个简单无向图,求出图中连通块的数目

    输入:

    输入的第一行包含两个整数n和m,n是图的顶点数,m是边数。1<=n<=1000,0<=m<=10000。

    以下m行,每行是一个数对v y,表示存在边(v,y)。顶点编号从1开始。

    题目分析:

    利用深度优先搜索寻找连通块数,一趟深度优先搜索为一个连通块,深度优先搜索次数为块数。

    #include<iostream>
    #include<memory>
    using namespace std;
    
    const int MAX=1001;
    int edge[MAX][MAX];
    int n, m;
    int num=0;
    bool isvisited[MAX];
    
    void DFS(int current)
    {
      for(int i=1;i<=n;i++)
      {
        if(!isvisited[i]&&edge[current][i])
        {
          isvisited[i]=true;
          DFS(i);
        }
      }
    }
    
    int main()
    {
      cin>>n>>m;
    
      int a, b;
      
      //初始化 
      memset(edge, 0,sizeof(edge));
      memset(isvisited, false, sizeof(isvisited));
    
      for(int i=0;i<m;i++)
      {
         cin>>a>>b;
         edge[a][b]=1;
         edge[b][a]=1;
      }
    
      for(int i=1;i<=n;i++)
      {
         if(!isvisited[i])
         {
            num++;
            isvisited[i]=true;
            DFS(i);
         }
      }
    
      cout<<num<<endl;
      return 0;
    }
    

      

  • 相关阅读:
    Nginx 集群 反向代理多个服务器
    Nginx 反向代理
    Nginx 图片服务器
    网鼎杯 pwn 记录
    demo.testfire.net 靶场测试流程记录
    靶场测试系列(已办清单)
    Burp Suite插件推荐
    ida不错的插件记录
    0ctf2017-babyheap
    0ctf2018 pwn
  • 原文地址:https://www.cnblogs.com/KennyRom/p/6243859.html
Copyright © 2011-2022 走看看