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

输入格式:

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

输出格式:

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

思路
很基础的DFS,BFS,也是理解的一种方式吧;
对一个点集的处理。
DFS深搜一个集合,属于一个集合,以及不属于。
BFS广搜一个集合,属于一个集合,以及不属于。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
const double pi = acos(-1.0);
const int mod = 1e9+7;const int N=1e2+10;bool vis[N];
int ma[N][N];
int n;
int d[N];void dfs(int x)
{for(int i=0;i<n;i++){if(!vis[i]&&ma[x][i]){vis[i]=1;printf(" %d",i);dfs(i);}}
}queue<int>q;
void bfs(int x)
{while(!q.empty())q.pop();q.push(x);while(!q.empty()){int u=q.front();q.pop();for(int i=0;i<n;i++){if(!vis[i]&&ma[u][i]){vis[i]=1;printf(" %d",i);q.push(i);}}}
}int main()
{int m;int a,b;cin>>n>>m;memset(ma,0,sizeof(ma));memset(vis,0,sizeof(vis));for(int i=0;i<m;i++){scanf("%d%d",&a,&b);ma[a][b]=ma[b][a]=1;}memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){if(!vis[i]){vis[i]=1;printf("{ %d",i);dfs(i);printf(" }\n");}}memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){if(!vis[i]){vis[i]=1;printf("{ %d",i);bfs(i);printf(" }\n");}}return 0;
}/*
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 }
*/

转载于:https://www.cnblogs.com/keyboarder-zsq/p/5934486.html

PTA 2-1 列出连通集【DFS+BFS基础】相关推荐

  1. 7-2 列出连通集 (25 分)

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

  2. 06-图1 列出连通集 —— 非联通图的DFS与BFS

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

  3. 7-6 列出连通集 (25 分)(详解)

    列出连通集 1:思路 : 利用了邻接矩阵储存数据并建图,然后就是 DFS遍历和BFS遍历 只不过是本题需要输出的是非连通图 连通分量 外加俩函数搞定 2:上码 #include<bits/std ...

  4. 06-图1 列出连通集

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

  5. 7-5 列出连通集 (6 分)

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

  6. 7-201 列出连通集 (25 分)

    7-201 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...

  7. 7-2 列出连通集 (25分)

    文章目录 7-2 列出连通集 (25分) 输入格式: 输出格式: 输入样例: 输出样例: 题解 伪代码 代码 7-2 列出连通集 (25分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别 ...

  8. 7-1 列出连通集(25 分)

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

  9. 列出连通集(java)

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

最新文章

  1. ArcObjects编程方法(七):.NET中继承ArcGIS COM类
  2. java makedir用法_Java Files.makeDir方法代码示例
  3. jQuery unbind 删除绑定事件 / 移除标签方法
  4. Django之Cookie
  5. linux read01,Linux内置命令之read
  6. math标准库函数----python
  7. scheduling java_JAVA定时任务实现的几种方式
  8. python职业发展方向_59秒看懂IT运维的发展方向及职业规划
  9. 6410的系统时钟设置(下)---几个常用函数的C源码
  10. 880 芯片组 服务器 cpu,顶级双核处理器对决 皓龙880完胜至强
  11. 《以截屏为基础的演示文档制作软件》(ScreenSteps Pro)更新v2.9.1/含注册机[压缩包]...
  12. if condition 大于_西门子进一步扩展Sinumerik Edge 平台的应用程序AnalyzeMyMachine/Condition...
  13. gdb进行多线程调试
  14. 模仿莫烦的PyCharm主题
  15. 超全Inventor 3d模型素材网站整理
  16. java18.取球游戏,12种球类游戏,想怎么玩就怎么玩!
  17. SecureCRT 64位 破解版v8.1.4及安装
  18. 模型评估——混淆矩阵confusion_matrix
  19. 非淡泊无以明志,非宁静无以致远。
  20. 关于Ilegal assignment(Quart II)问题的解决

热门文章

  1. Java 笔试强训 牛客网选择编程题 01
  2. 从大到小输出a、b、c(选择结构)
  3. python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
  4. 水冒泡了几度_冒泡和选择排序详解
  5. js金额千分位显示_JavaScript 格式化数字、金额、千分位、保留几位小数
  6. 最方便的字符设备驱动的写法
  7. pycharm和jupyter notebook中的快捷键
  8. 直接访问WEB-INF目录下的JSP页面的方法
  9. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-Web版本工作流部分业务处理界面与查看界面全新展示...
  10. 短视频技术指南:国内最牛5家短视频解决方案提供