文章目录

  • 7-2 列出连通集 (25分)
    • 输入格式:
    • 输出格式:
    • 输入样例:
    • 输出样例:
  • 题解
    • 伪代码
  • 代码

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

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

输入格式:

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

输出格式:

按照"{ v​1​​ v​2​​ … v​k​​ }"的格式,每行输出一个连通集。先输出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分)相关推荐

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

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

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

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

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

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

  4. 列出连通集 (25 分)【DFS与BFS模板】

    立志用最少的代码做最高效的表达 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...

  5. 7-6 列出连通集 (25 分)(C语言实现)

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

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

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

  7. 列出连通集(java)

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

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

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

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

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

最新文章

  1. Hadoop-虚拟机环境准备
  2. OpenGL的简单研究-开端
  3. (转)HTTP 协议之压缩
  4. 笔记整理-知识产权与标准化知识-GB/T11457-2006软件工程术语
  5. R可视化lend_club 全球最大的P2P平台数据75W条
  6. flutter 一直loading_开源 | FLUI : Flutter 的组件扩展集
  7. 【AMESim】AMESim和Simulink联合仿真步骤
  8. ICMP协议详解和作用
  9. NetCore EF 使用scaffold-dbcontext导致deps.json] does not exist的解决办法
  10. 北京“全面城市化”之后,你怎么看?
  11. 教程:微信公众号的链接如何提取出来?非常简单!
  12. win10解决redis桌面管理工具RedisDesktopManager右边黑屏问题
  13. eclipes 安装的常用配置
  14. windows输入法英文字体间距比平常大,按照设置里按下"shift+space“键,也依然如此
  15. 【在线教程】pdf文件怎么压缩到最小
  16. website for all kinds of courses
  17. zigbee芯片方案和模组选型
  18. 通达信资金净流入公式_通达信资金净流入指标公式$$$$$$
  19. 太原理工大学计算机专业全国排名,2020计算机专业大学排名
  20. hgame2023 week1 writeup

热门文章

  1. Windows Embedded Standard 7 SP1 Runtime 下载
  2. linux 易语言窗口程序_用易语言开发Linux程序的方法
  3. centos8显示网络连接激活失败
  4. 浅谈大数据风控的基本框架
  5. VBS批量修改文件名
  6. HTML给汉字头部添加拼音的标签
  7. Python热门单元测试框架对比:pytest和unittest还傻傻分不清楚?
  8. 微信开发(一)--分享接口
  9. JSP-----JSP简介
  10. Qt(mingw)+GDAL位图转矢量图写入shp或json文件