首页 > 其他分享 >7-5 列出连通集

7-5 列出连通集

时间:2024-03-22 23:32:00浏览次数:29  
标签:输出 连通 int 编号 顶点 格式 列出

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。

输入格式:

输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。

输出格式:

按照"{ v1​ v2​ ... vk​ }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。

输入样例:

8 6
0 7
0 1
2 0
4 1
2 4
3 5

输出样例:

{ 0 1 4 2 7 }
{ 3 5 }
{ 6 }
{ 0 1 2 7 4 }
{ 3 5 }
{ 6 }
#include <iostream>
#include <cstring>
using namespace std;
const int N = 20;
int n,m;
int g[N][N];
bool st[N];
void bfs(int u)
{
    int q[N],rear = -1,front = 0;
    q[++rear] = u;
    st[u] = true;
    while(front<=rear)
    {
        int t = q[front++];
        cout<<" "<<t;
        for(int i=0;i<n;i++)
            if(!st[i]&&g[t][i]==1) 
            {
                st[i] = true;
                q[++rear] = i;
            }

    }
}
void BFST()
{
    memset(st,false,sizeof st);
    for(int i=0;i<n;i++)
        if(!st[i])
        {
        cout<<"{";
         bfs(i);
        cout<<" }"<<endl;
        }
}
void dfs(int u)
{
    cout<<" "<<u;
    st[u] = true;//
    for(int i=0;i<n;i++)
        if(!st[i]&&g[u][i] == 1) 
            dfs(i);
}
void DFST()
{

    
    for(int i=0;i<n;i++)
    {
        if(!st[i])
        {
        cout<<"{";
         dfs(i);
        cout<<" }"<<endl;
        }
    }

}
int main()
{
    cin>>n>>m;
    while(m--)
    {
        int u,v;
        cin>>u>>v;
        g[u][v] = g[v][u] = 1;
    }
    DFST();
    BFST();
    return 0;
}

标签:输出,连通,int,编号,顶点,格式,列出
From: https://blog.csdn.net/qq_62145422/article/details/136918666

相关文章

  • CF938G-动态连通图最短xor路(线段树分治、并查集、线性基)
    link:https://codeforces.com/contest/938/problem/G[!Description]有一张连通的无向图简单图,三种操作:1、加边\((x,y,d)\)2、删边\((x,y)\)3、询问\(x\toy\)的路径中异或最小的路径(不一定是简单路径)保证每次操作后图是连通的\(1\leqn,m,q\leq2\times10^5\).这......
  • 解决[TSP旅行商]问题,请列出[4]个可以用[Python]编程的优化路径算法,展开写出这[4]个算
    TSP(旅行商问题)是一个经典的组合优化问题,其目标是找到访问所有城市并返回起点的最短可能路线。在Python中,有多种算法可以用来解决TSP问题,以下是四个常用的算法及其编程难度级别、时间复杂度和所需的库:回溯法(Backtracking)编程难度级别:中等时间复杂度:指数级,因为需要遍历所有......
  • redis查询端口与密码以及连通性测试方法
    目录一.端口查找二.密码查找三.连通性测试前言:redis的配置信息都在redis.conf文件里面,可以通过find/-nameredis.conf 进行查找文件存放位置,然后进入redis.conf文件进行查看一.端口查找1.使用命令 ps-ef|grepredis进行查找,示例6450/6451均为redis......
  • 在Linux中,列出几种常用的Linux备份工具并说明各自的适用场景。
    在Linux中,有多种备份工具可用于不同场景下的数据保护和系统恢复,以下是一些常用的备份工具及其适用场景:tar:适用场景:tar是Linux中最基础的归档工具,广泛应用于创建文件和目录的打包备份。它可以将多个文件或整个目录结构整合成一个单一的.tar文件,并可选地配合gzip、bzip2或xz等......
  • 【PG】列出表以及大小
    ThispostdemonstratesanexampleofaBashscriptthatconnectstoaDBandprintsalistoftables,theirrecordsnumber,andsize.Theresultsetissortedindescendingorderbysizeandthenbynumberofrecords.Inaddition,theoutputofthescript......
  • 有向图的连通性
    强连通:如果两个点彼此都能到达对方,那么这两个点是连通的。如果一个图中任意两个点都连通,那么这个图是强连通图。强连通分量:如果一个图不是强连通图,那么可以将其分为多个子图,使得每个子图强连通且不能与其他的子图形成强连通,那么每个子图就是强连通分量。简单点说,如果将所有子图缩......
  • 测试网络端口连通性
    简介:在网络服务中,经常需要测试是否能连接服务器,ping服务器地址能通只能表示三层网络没问题,而不能表示上层服务端口号正常,而这就需要我们运用工具来测试四层端口号是否正常?可以通过Telnet、nc、ssh命令来测试端口连通性1、TelnetTelnet只能用于测试TCP端口,而nc即可用于测试TCP......
  • 【学习笔记】《综述图论中连通性及相关问题的一些处理方法》
    2023集训队论文第一篇。发现好像存在很多我不会/见过但是从来没记住过的结论之类的,所以这篇主要是背结论用的。目录无向图双连通性点双连通分量的性质耳分解割空间与环空间有向图可达性问题强连通性有向环竞赛图记\(u\rightsquigarrowv\)为\(u\)到\(v\)的路径,\(u\t......
  • Windows如何检测UDP端口的连通性
    在Windows平台上如何检测UDP端口的连通性呢?其实,平时我们遇到检测TCP端口的连通性的情况比较多,遇到检测UDP端口连通性的情况较少。而且检测UDP端口的连通性比较复杂一点。像检测TCP端口是否连通(放开),Windows平台,一般常用的工具有telnet、psping等工具,而检测UDP端口的工具,在Linux平台......
  • 动态图连通性
    Describe:你要维护一张无向简单图(即没有自环,没有重边的无向图)。你被要求加入删除一条边及查询两个点是否连通。0:加入一条边。保证它不存在。1:删除一条边。保证它存在。2:查询两个点是否联通。允许离线Solution:对于离线做法,可以用线段树分治加可撤销并查集,时间仅\(O(n\lo......