【C/C++】列出连通集
2017-10-12 21:04
791 查看
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。
输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。
按照"{ v1 v2
... vk
}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。
题目源于:http://pta.patest.cn/pta/test/18/exam/4/question/624
题目分析:图的基本操作,需要考虑边界条件。
输入格式:
输入第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 }
题目源于:http://pta.patest.cn/pta/test/18/exam/4/question/624
题目分析:图的基本操作,需要考虑边界条件。
// ListTheConnectedSet.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "Graph.h" #include <iostream> using namespace std; Graph buildGraph(int n); int main() { Graph map = new GNode; int N; cin >> N; map = buildGraph(N); int* visited = new int ; for (int i = 0; i < N; i++) visited[i] = 0; int flag = 1; int num = 0; while (flag) { flag = 0; cout << "{ "; DFS(num, map, visited); cout << "}" << endl; for (int i = 0; i < N; i++) { if (visited[i] == 0) { num = i; flag = 1; break; } } } num = 0; flag = 1; for (int i = 0; i < N; i++) visited[i] = 0; while (flag) { flag = 0; cout << "{ "; BFS(num,map, visited); cout << "}" << endl; for (int i = 0; i < N; i++) { if (visited[i] == 0) { num = i; flag = 1; break; } } } return 0; } Graph buildGraph(int n) { Graph map = new GNode; int ne; cin >> ne; map = createGraph(n); map->Ne =ne; ENode edge; for (int i = 0; i < ne; i++) { int x, y; cin >> x >> y; edge.v1 = x; edge.v2 = y; edge.weight = 1; insertEdge(map, &edge); } return map; }
/* 10 8 6 8 8 9 1 7 2 1 3 6 5 6 2 4 3 1*/
相关文章推荐
- C++中输入字符串能连通空格符一起输入
- LINUX下用C语言历遍目录 C语言列出目录 dirent.h在C/C++中的使用
- LINUX下用C语言历遍目录 C语言列出目录 dirent.h在C/C++中的使用
- 06-图1 列出连通集
- 图的基本操作:建立图,DFS,BFS-06-图1 列出连通集
- 列出比较容易忘记的 C++(C)语言语法及标准库
- 连通区域标记:c++版的bwlabel实现(基于opencv)
- 连通图计数模板【c++&Java】
- C++ 读取文件中的数字 并存放到vector中 在由vector存放到 multimap中 最后BFS 判断是否连通
- 06-图1 列出连通集 (25分) C++
- 高速穷尽列出任意连通图的哈密顿圈第二步
- 高速穷尽列出任意连通图的哈密顿圈第三步
- C++列出完数
- 数据结构_图_邻接表做存储结构实现求无向图的连通分量_C++实现
- C/C++是最主要的编程语言,这里列出了50名优秀网站
- C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单
- C++第四周【任务3】设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。
- 06-图1 列出连通集
- 求有向图的强连通分支(邻接表存储)C++实现
- 7-6 列出连通集