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

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

输入格式:

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

输出格式:

按照"{ v1v2…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 }
import java.util.*;public class Main {static List<Integer>[] tab;  // 邻接表static int[] vis;  // 记录当前节点是否访问过public static void main(String[] args) {Scanner scan = new Scanner(System.in);int vCount = scan.nextInt();  // 节点数int eCount = scan.nextInt();  // 边数tab = new List[vCount];  // 创建邻接表vis = new int[vCount];  // 创建访问数组,1标记已经访问,0为为访问for (int i = 0; i < tab.length; i++) {  // 初始化邻接表tab[i] = new ArrayList<>();}for (int i = 0; i < eCount; i++) {  // 向邻接表中添加数据int a = scan.nextInt();int b = scan.nextInt();tab[a].add(b);tab[b].add(a);}for (int i = 0; i < tab.length; i++) {  // 对邻接节点按升序排序Collections.sort(tab[i]);}for (int i=0;i<vCount;i++){  // dfsif (vis[i] == 0){System.out.print("{ ");dfs(i, i);System.out.println("}");}}vis = new int[vCount];  // 清除刚才访问的状态,重新初始化for (int i=0;i<vCount;i++){  // bfsif (vis[i] == 0){System.out.print("{ ");bfs(i);System.out.println("}");}}}// bfs -- 队列private static void bfs(int curr) {List<Integer> queue = new ArrayList<>();queue.add(curr);while (queue.size()!=0){curr = queue.remove(0);vis[curr] = 1;System.out.print(curr + " ");List<Integer> ll = tab[curr];for (int i = 0; i < ll.size(); i++) {int N = ll.get(i);if (vis[N] == 0 && !queue.contains(N)){queue.add(N);}}}}// dfs -- 递归深搜// pre是父节点, curr为当前节点public static void dfs(int pre, int curr){if (vis[curr] == 1) return;System.out.print(curr + " ");vis[curr] = 1;List<Integer> ll = tab[curr];for (int i = 0; i < ll.size(); i++) {if (ll.get(i) == pre) continue;if (vis[ll.get(i)]==0){dfs(curr, ll.get(i));}}}
}

列出连通集(java)相关推荐

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

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

  2. 06-图1 列出连通集

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. awk算术运算一例:统计hdfs上某段时间内的文件大小
  2. requests.get(url)执行没反应_如果贾府抄家时黛玉还活着,她会是什么反应?
  3. 电磁场第二章公式总结
  4. 采购订单相关Table
  5. 通过异常捕获判断字符串是不是数字格式
  6. 软考系统架构师笔记-最后知识点总结(一)
  7. 使用Task简化Silverlight调用Wcf
  8. gin 源码解析 - 详解http请求在gin中的流转过程
  9. 基于Docker部署LNMP架构
  10. 适合传统节日促销首焦设计的PSD分层模板
  11. Jenkins问题:SVN插件未更新到最新代码
  12. 28天肝完阿里面试通关宝典,含答案解析
  13. 【项目】数据仓库概述
  14. 北京杭州差距这么大?程序员在北京准点下班,在杭州12点在还加班
  15. StringBuffer的使用
  16. TaWRKY19/61/82激活糖转运蛋白TaSTP3从而增强小麦条锈病敏感性
  17. HTML标签的宽高设置
  18. 知云文献翻译打不开_论文翻译小工具,一键即可免费翻译全文| 知云文献翻译、彩云小译(附安装包)...
  19. 大白话版 UnityShader学习(1)-基础纹理研究(一)
  20. 人工智能海洋学基础及应用(讲义)Python代码

热门文章

  1. VTK学习笔记(三十六)VTK图像填充
  2. 身体指数bmi流程图_【新城校区】新生体检丨你了解你的身体吗?
  3. VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言
  4. js moment.js 给定时间 获取自然月、周的时间轴
  5. 【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。
  6. 删除所有用户数据!永久关闭
  7. Python 批量合并多个txt文件
  8. uni-app开发社区交友类项目
  9. 学习c/c++ 推荐学习什么书籍?
  10. ADAS不是自动驾驶汽车