PTA 2-1 列出连通集【DFS+BFS基础】
给定一个有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基础】相关推荐
- 7-2 列出连通集 (25 分)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输入格式: 输入第1 ...
- 06-图1 列出连通集 —— 非联通图的DFS与BFS
06-图1 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...
- 7-6 列出连通集 (25 分)(详解)
列出连通集 1:思路 : 利用了邻接矩阵储存数据并建图,然后就是 DFS遍历和BFS遍历 只不过是本题需要输出的是非连通图 连通分量 外加俩函数搞定 2:上码 #include<bits/std ...
- 06-图1 列出连通集
06-图1 列出连通集(25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺 ...
- 7-5 列出连通集 (6 分)
7-5 列出连通集 (6 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 7-201 列出连通集 (25 分)
7-201 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...
- 7-2 列出连通集 (25分)
文章目录 7-2 列出连通集 (25分) 输入格式: 输出格式: 输入样例: 输出样例: 题解 伪代码 代码 7-2 列出连通集 (25分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别 ...
- 7-1 列出连通集(25 分)
7-1 列出连通集(25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 列出连通集(java)
7-6 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...
最新文章
- ArcObjects编程方法(七):.NET中继承ArcGIS COM类
- java makedir用法_Java Files.makeDir方法代码示例
- jQuery unbind 删除绑定事件 / 移除标签方法
- Django之Cookie
- linux read01,Linux内置命令之read
- math标准库函数----python
- scheduling java_JAVA定时任务实现的几种方式
- python职业发展方向_59秒看懂IT运维的发展方向及职业规划
- 6410的系统时钟设置(下)---几个常用函数的C源码
- 880 芯片组 服务器 cpu,顶级双核处理器对决 皓龙880完胜至强
- 《以截屏为基础的演示文档制作软件》(ScreenSteps Pro)更新v2.9.1/含注册机[压缩包]...
- if condition 大于_西门子进一步扩展Sinumerik Edge 平台的应用程序AnalyzeMyMachine/Condition...
- gdb进行多线程调试
- 模仿莫烦的PyCharm主题
- 超全Inventor 3d模型素材网站整理
- java18.取球游戏,12种球类游戏,想怎么玩就怎么玩!
- SecureCRT 64位 破解版v8.1.4及安装
- 模型评估——混淆矩阵confusion_matrix
- 非淡泊无以明志,非宁静无以致远。
- 关于Ilegal assignment(Quart II)问题的解决
热门文章
- Java 笔试强训 牛客网选择编程题 01
- 从大到小输出a、b、c(选择结构)
- python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
- 水冒泡了几度_冒泡和选择排序详解
- js金额千分位显示_JavaScript 格式化数字、金额、千分位、保留几位小数
- 最方便的字符设备驱动的写法
- pycharm和jupyter notebook中的快捷键
- 直接访问WEB-INF目录下的JSP页面的方法
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-Web版本工作流部分业务处理界面与查看界面全新展示...
- 短视频技术指南:国内最牛5家短视频解决方案提供