7-6 列出连通集 (25 分)(C语言实现)
给定一个有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 <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
int ch[11][11]; //连接矩阵
int n; //顶点
bool flag[11];
void DFS(int x)
{printf(" %d",x);flag[x] = true;for (int i=0;i<n;i++){if (flag[i]==false&&ch[x][i]==1){DFS(i);}}
}
void BFS(int x){flag[x] = true;int front = 0,end = 1;int cun[1001];memset(cun,0,sizeof(cun));cun[0] = x;while (front!=end){int data = cun[front++];printf(" %d",data);for (int i=0;i<n;i++){if (ch[data][i]==1&&flag[i]==false){cun[end++] = i;flag[i] =true;}}}
}
int main()
{int e; //边数;scanf("%d %d", &n, &e);while (e--){int a, b;scanf("%d %d", &a, &b);ch[a][b] = 1;ch[b][a] = 1;}memset(flag, false, sizeof(flag));for (int i = 0; i < n; i++){if (flag[i] == false){printf("{");DFS(i);printf(" }\n");}}memset(flag, false, sizeof(flag));for (int i=0;i<n;i++){if (flag[i]==false){printf("{");BFS(i);printf(" }\n");}}
}
7-6 列出连通集 (25 分)(C语言实现)相关推荐
- 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-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-5 列出连通集 (6 分)
7-5 列出连通集 (6 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 11-散列1 电话聊天狂人 (25 分) (C语言)
浙大版<C语言程序设计实验与习题指导(第3版)>题目集 11-散列1 电话聊天狂人 (25 分) 二.题解 c代码 11-散列1 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出 ...
- 银行业务队列简单模拟 (25 分)c语言c++
7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银 ...
- 7-4 哈利·波特的考试 (25 分)(C语言实现)
7-4 哈利·波特的考试 (25 分) 哈利·波特要考试了,他需要你的帮助.这门课学的是用魔咒将一种动物变成另一种动物的本事.例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等.反方向 ...
最新文章
- 微生物组领域最高质量的资源全在这
- 如何用纯 CSS 创作一个单元素抛盒子的 loader
- 怎样使用SetTimer MFC 够具体
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
- 转】MYSQL性能调优与架构设计之select count(*)的思考
- makefile如何减小可执行文件的大小(没有用到的函数不参与链接)
- base64是哪个jar包的_涨知识 | 用maven轻松管理jar包
- Virtual Studio 2013 每次加载程序(dll)缓慢的问题
- 【经典重温】所有数据无需共享同一个卷积核!谷歌提出条件参数化卷积CondConv(附Pytorch复现代码)...
- grpc-go客户端源码分析
- Linux内核CPU负载均衡机制
- smart210 资源
- Java开发手册、帮助文档
- 信号与系统基础简单知识概括
- word文档怎么压缩,word压缩大小
- 旋转矩阵是正交矩阵与伴随性质的证明
- LayaBox微信小游戏截图功能 利用微信API实现完美截图
- Android游戏开发教程汇总
- 详解Unity中的粒子系统Particle System (十)
- 高校实验室预约系统功能简介及解决方案
热门文章
- 关于码云开源项目SpringBootAdmin多数据源配置
- SecureCRT Application 已停止工作
- python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)
- 如何理解Java中的自动拆箱和自动装箱?
- ConcurrentHashMap底层原理?
- Java异常分类及处理
- linux php cgi.sock,nginx中unix:/tmp/php-cgi.sock错误解决解决
- android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置
- java数组排序源码_Java 数组工具类排序,最大值最小值等
- 顺序队列,循环队列,链队列