7-2 列出连通集 (25分)
文章目录
- 7-2 列出连通集 (25分)
- 输入格式:
- 输出格式:
- 输入样例:
- 输出样例:
- 题解
- 伪代码
- 代码
7-2 列出连通集 (25分)
给定一个有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 }
题解
创建二维矩阵,输入的边的值为1,没有边为0,再利用bfs,dfs进行输出
编写深度优先搜索函数,广度优先搜索函数,再通过函数调用进行输出。
伪代码
Dfs算法
{访问过的点 = 1;cout << " " << a;for (int i = 0; i < N; i++){if (其他点到这个点有边并且该点未被访问过)//该点未访问过并且其他点到这个点有边{Dfs递归}}
}
Bfs算法
{创建队列将点压入队列;访问过该点 = 1;while (队列不为空) {设an为队首元素;弹出队首元素;将an输出;for (int i = 0; i < N; i++){if (该点未访问过并且该点与其他点有边) {标记该点为1,被访问过将该点压入队列}}}
}
代码
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<vector>
#include<stack>
#include<math.h>
#include<queue>using namespace std;const int inf = 99999;
const int maxn = 12;
int n, e, G[maxn][maxn];
bool vis[maxn], inq[maxn];// 深度优先搜索
void DFS(int u)
{vis[u] = true;cout << " " << u;for (int v = 0; v < n; v++){if (vis[v] == false && G[u][v] != inf){DFS(v);}}
}void DFSTravel()
{for (int u = 0; u < n; u++){if (vis[u] == false) // 避免没有通路情况{cout << "{";DFS(u);cout << " }\n";}}
}// 广度优先搜索
void BFS(int u)
{queue<int> q;q.push(u);inq[u] = true; // 访问过标记truewhile (!q.empty()){int temp = q.front();cout << " " << temp;q.pop();for (int v = 0; v < n; v++){if (inq[v] == false && G[temp][v] != inf){q.push(v);inq[v] = true;}}}
}void BFSTravel()
{for (int u = 0; u < n; u++){if (inq[u] == false){cout << "{";BFS(u);cout << " }\n";}}
}int main()
{fill(G[0], G[0] + maxn * maxn, inf);cin >> n >> e;for (int i = 0; i < e; i++){int a, b;cin >> a >> b;G[a][b] = G[b][a] = 1; // 通路赋值为1}DFSTravel(); // 深度优先搜索BFSTravel(); // 广度优先搜索return 0;
}
7-2 列出连通集 (25分)相关推荐
- 7-201 列出连通集 (25 分)
7-201 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...
- 7-2 列出连通集 (25 分)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输入格式: 输入第1 ...
- 7-6 列出连通集 (25 分)(详解)
列出连通集 1:思路 : 利用了邻接矩阵储存数据并建图,然后就是 DFS遍历和BFS遍历 只不过是本题需要输出的是非连通图 连通分量 外加俩函数搞定 2:上码 #include<bits/std ...
- 列出连通集 (25 分)【DFS与BFS模板】
立志用最少的代码做最高效的表达 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 7-6 列出连通集 (25 分)(C语言实现)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点. 输入格式: 输入第1 ...
- 7-5 列出连通集 (6 分)
7-5 列出连通集 (6 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 列出连通集(java)
7-6 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...
- 06-图1 列出连通集 —— 非联通图的DFS与BFS
06-图1 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...
- 7-1 列出连通集(25 分)
7-1 列出连通集(25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
最新文章
- Hadoop-虚拟机环境准备
- OpenGL的简单研究-开端
- (转)HTTP 协议之压缩
- 笔记整理-知识产权与标准化知识-GB/T11457-2006软件工程术语
- R可视化lend_club 全球最大的P2P平台数据75W条
- flutter 一直loading_开源 | FLUI : Flutter 的组件扩展集
- 【AMESim】AMESim和Simulink联合仿真步骤
- ICMP协议详解和作用
- NetCore EF 使用scaffold-dbcontext导致deps.json] does not exist的解决办法
- 北京“全面城市化”之后,你怎么看?
- 教程:微信公众号的链接如何提取出来?非常简单!
- win10解决redis桌面管理工具RedisDesktopManager右边黑屏问题
- eclipes 安装的常用配置
- windows输入法英文字体间距比平常大,按照设置里按下"shift+space“键,也依然如此
- 【在线教程】pdf文件怎么压缩到最小
- website for all kinds of courses
- zigbee芯片方案和模组选型
- 通达信资金净流入公式_通达信资金净流入指标公式$$$$$$
- 太原理工大学计算机专业全国排名,2020计算机专业大学排名
- hgame2023 week1 writeup