数据结构-列出联通集

数据结构-列出联通集,第1张

概述本文章向大家介绍数据结构-列出联通集,主要包括数据结构-列出联通集使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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

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

输入格式:

输入第1行给出2个整数N(0

输出格式:

按照"{ v​1​​ v​2​​ ... v​k​​ }"的格式,每行输出一个连通集。先输出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

#include

#include

#include

#include

using namespace std;

int n,e;

int mapp[21][21];

int vis[21];

voID DFS(int i)

{

vis[i]=1;

printf("%d ",i);

for(int j=0;j

if(!vis[j]&&mapp[i][j])

DFS(j);

}

voID BFS(int i)

{

queue Q;

Q.push(i);

vis[i]=1;

while(!Q.empty())

{

int cnt = Q.front();

printf("%d ",cnt);

Q.pop();

for(int j=0;j

{

if(!vis[j]&&mapp[cnt][j])

{

vis[j]=1;

Q.push(j);

}

}

}

}

int main()

{

scanf("%d %d",&n,&e);

int x,y;

for(int i=0;i

{

int x,y;

scanf("%d%d",&x,&y);

mapp[x][y]=mapp[y][x]=1;

}

for(int i=0;i

{

if(!vis[i])

{

printf("{ ");

DFS(i);

printf("}n");

}

}

memset(vis,sizeof(vis));

for(int i=0;i

{

if(!vis[i])

{

printf("{ ");

BFS(i);

printf("}n");

}

}

}

总结

以上是内存溢出为你收集整理的数据结构-列出联通集全部内容,希望文章能够帮你解决数据结构-列出联通集所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存