列出连通集(java)
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)相关推荐
- 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编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
- 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编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的 ...
- 列出连通集 (25 分)【DFS与BFS模板】
立志用最少的代码做最高效的表达 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访 ...
最新文章
- awk算术运算一例:统计hdfs上某段时间内的文件大小
- requests.get(url)执行没反应_如果贾府抄家时黛玉还活着,她会是什么反应?
- 电磁场第二章公式总结
- 采购订单相关Table
- 通过异常捕获判断字符串是不是数字格式
- 软考系统架构师笔记-最后知识点总结(一)
- 使用Task简化Silverlight调用Wcf
- gin 源码解析 - 详解http请求在gin中的流转过程
- 基于Docker部署LNMP架构
- 适合传统节日促销首焦设计的PSD分层模板
- Jenkins问题:SVN插件未更新到最新代码
- 28天肝完阿里面试通关宝典,含答案解析
- 【项目】数据仓库概述
- 北京杭州差距这么大?程序员在北京准点下班,在杭州12点在还加班
- StringBuffer的使用
- TaWRKY19/61/82激活糖转运蛋白TaSTP3从而增强小麦条锈病敏感性
- HTML标签的宽高设置
- 知云文献翻译打不开_论文翻译小工具,一键即可免费翻译全文| 知云文献翻译、彩云小译(附安装包)...
- 大白话版 UnityShader学习(1)-基础纹理研究(一)
- 人工智能海洋学基础及应用(讲义)Python代码
热门文章
- VTK学习笔记(三十六)VTK图像填充
- 身体指数bmi流程图_【新城校区】新生体检丨你了解你的身体吗?
- VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言
- js moment.js 给定时间 获取自然月、周的时间轴
- 【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。
- 删除所有用户数据!永久关闭
- Python 批量合并多个txt文件
- uni-app开发社区交友类项目
- 学习c/c++ 推荐学习什么书籍?
- ADAS不是自动驾驶汽车