PTA-列出连通集(DFS+BFS)
来源:互联网 发布:tensorflow whl 编辑:程序博客网 时间:2024/06/05 19:50
列出连通集 (25分)
给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。
输入格式:
输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。
输出格式:
按照"{ v1 v2 ... vk }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。
输入样例:
8 60 70 12 04 12 43 5
输出样例:
{ 0 1 4 2 7 }{ 3 5 }{ 6 }{ 0 1 2 7 4 }{ 3 5 }{ 6 }
#include <iostream>#include <cstring>#include <queue>using namespace std;int n,m,v[11],Map[11][11];void DFS(int x){ cout<<' '<<x; for(int i=0; i<n; i++) { if(!v[i]&&Map[x][i]==1) { v[i]=1; DFS(i); } }}void BFS(int x){ int y; queue<int>Q; Q.push(x); while(!Q.empty()) { y=Q.front(); cout<<' '<<y; Q.pop(); for(int i=0; i<n; i++) { if(!v[i]&&Map[y][i]==1) { v[i]=1; Q.push(i); } } }}int main(){ int x,y; cin>>n>>m; memset(Map,0,sizeof(Map)); memset(v,0,sizeof(v)); while(m--) { cin>>x>>y; Map[x][y]=Map[y][x]=1; } for(int i=0; i<n; i++) { if(v[i]==0) { v[i]=1; cout<<"{"; DFS(i); cout<<" }"<<endl; } } memset(v,0,sizeof(v)); for(int i=0; i<n; i++) { if(v[i]==0) { v[i]=1; cout<<"{"; BFS(i); cout<<" }"<<endl; } } return 0;}
阅读全文
0 0
- PTA-列出连通集(DFS+BFS)
- PTA 2-1 列出连通集【DFS+BFS基础】
- PAT--列出连通集--dfs&bfs
- 列出连通集-----简单dfs+bfs
- 列出连通集——DFS+BFS
- 图论BFS DFS 列出连通集
- PTA 06-图1 列出连通集
- 图的基本操作:建立图,DFS,BFS-06-图1 列出连通集
- PTA 数据结构与算法题目集(中文)5-6 列出连通集 (25分)
- pat--列出连通集
- 列出连通集
- 列出连通集
- poj1562 DFS/BFS连通块
- 5-6 列出连通集
- 5-6 列出连通集
- 5-6 列出连通集
- 【C/C++】列出连通集
- 7-6 列出连通集
- 11月8日icmp协议下ping命令学习
- ZooKeeper分布式队列实现MapReduce任务集成
- Spring--SpringMVC中使用bean来接收form表单提交的参数时的注意点
- DOS批处理高级教程 第四章 批处理中的变量
- MyBatis入门
- PTA-列出连通集(DFS+BFS)
- 二叉树
- 代码片段学习(一)
- C++数据结构之栈——顺序栈的实现
- 基于Qt的海康威视网络摄像头SDK的二次开发(一)
- mysql中datatime格式转化,后台为node
- echarts 动态获取数据demo
- FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- 插入排序之希尔排序