c++数据结构第六周(图),深搜、广搜(stl版)

news/2024/7/20 21:57:48 标签: c++, 数据结构, 深度优先

本方法皆用vector进行邻接表模拟

7-1 图的先深搜索
作者 唐艳琴
单位 中国人民解放军陆军工程大学

输出无向图的给定起点的先深序列。
输入格式:

输入第一行给出三个正整数,分别表示无向图的节点数N(1<N≤10)、边数M(≤50)和探索起始节点编号S(节点从1到N编号)。

随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号。
输出格式:

输出从S开始的无向图的先深搜索序列,用一个空格隔开,最后也有一个空格;如果为非连通图,再在结尾处另起一行输出一个0,表示此图非连通。

由于深度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以表头插入法构造邻接表。
输入样例1:

6 8 2
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5

输出样例1:

2 3 6 4 5 1

输入样例2:

4 3 1
1 2
2 3
3 1

输出样例1:

1 3 2
0
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,m,s,a,b,cnt;
vector<int>road[15];
bool check[15];
void dfs(int now){
	check[now]=true;
	cout<<now<<" ";
	cnt++;
	for(int i=road[now].size()-1;i>=0;--i){
		if(!check[road[now][i]]){
			dfs(road[now][i]);
		}
	}
}
int main(){
	cin>>n>>m>>s;
	while(m--){
		cin>>a>>b;
		road[a].push_back(b);
		road[b].push_back(a);
	}
	dfs(s);
	cout<<(cnt==n?"":"\n0");
}

7-2 图的先广搜索
作者 唐艳琴
单位 中国人民解放军陆军工程大学

输出无向图的给定起点的先广序列。
输入格式:

输入第一行给出三个正整数,分别表示无向图的节点数N(1<N≤10)、边数M(≤50)和探索起始节点编号S(节点从1到N编号)。

随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号。
输出格式:

输出从S开始的无向图的先广搜索序列,用一个空格隔开,最后也有一个空格;如果为非连通图,再在结尾处另起一行输出一个0,表示此图非连通。

由于广度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以表头插入法构造邻接表。
输入样例:

6 8 2
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5

输出样例:

2 3 1 6 4 5
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
int n,m,s,a,b,cnt;
vector<int>road[15];
bool check[15];
queue<int>q;
void bfs(int begin){
	q.push(begin);
	while(!q.empty()){
		begin=q.front();q.pop();
		if(check[begin]) continue;
		cout<<begin<<" ";check[begin]=true;cnt++;
		for(int i=road[begin].size()-1;i>=0;--i){
			q.push(road[begin][i]);
		}
	}
}
int main(){
	cin>>n>>m>>s;
	while(m--){
		cin>>a>>b;
		road[a].push_back(b);
		road[b].push_back(a);
	}
	bfs(s);
	cout<<(cnt==n?"":"\n0");
}

http://www.niftyadmin.cn/n/4180.html

相关文章

基于JavaSwing进销存管理系统的设计与实现

目录 摘要 i Abstract ii 1 绪 论 1 1.1本课题的研究背景 1 1.2国内外研究现状 1 1.3本课题的重要工作 2 1.4选题意义 3 2 开发工具的选择 4 2.1开发工具Eclipse的介绍 4 2.2 SQLServer数据库介绍 4 2.3 swing组件与功能 5 3 可行性分析 6 3.1经济可行性 6 3.2技术可行性 6 3.3…

【每日一练】组队竞赛 删除公共字符(C++实现)

文章目录组队竞赛题目链接思路代码实现删除公共字符题目链接思路代码实现组队竞赛 题目链接 组队竞赛 思路 第一步&#xff1a;排序 首先我们先对所有数&#xff0c;进行排序 第二步&#xff1a;选择分组 我们这道题的最重要&#xff0c;最难点就是该如何分组呢&#xf…

USACO 2021 December Contest, Silver

目录 Problem 1. Closest cow wins Problem 2. Connecting Two Barns Problem 3. Convoluted Intervals Problem 1. Closest cow wins Farmer John owns a long farm along the highway that can be considered somewhat like a one-dimensional number line. Along the fa…

默认浏览器怎么更改为别的浏览器,这2个方法很简单

我们在电脑上设置默认浏览器后&#xff0c;点击别人发过来的网址链接&#xff0c;就是用默认浏览器打开的。有些人不喜欢一些浏览器&#xff0c;想把之前默认浏览器更改为别的浏览器&#xff0c;那么&#xff0c;要怎么去设置默认浏览器成为自己喜欢的浏览器呢&#xff1f;下面…

计算机网络-网络层(路由算法与路由协议概述,IP数据报格式,IP数据报分片)

文章目录1. 路由算法概述2. ip数据报格式3. ip数据报分片1. 路由算法概述 路由算法分为两类&#xff1a; 静态路由算法&#xff1a;管理员手动配置路由信息 优点&#xff1a;简便&#xff0c;可靠&#xff0c;在负荷稳定&#xff0c;拓扑变化不大的网络中运行效果很好&#xf…

量子计算(三):有哪些机构或公司参与量子计算的研发

文章目录 有哪些机构或公司参与量子计算的研发 一、谷歌 二、微软 三、英特尔 四、IBM 五、阿里巴巴 六、百度 七、本源量子 有哪些机构或公司参与量子计算的研发 近年来&#xff0c;世界各个科技强国都高度重视量子计算研究&#xff0c;纷纷发布自己的量子信息科技战…

双非本计算机从零开始三年努力能做到什么程度【学习路线回顾总结问答】

文章目录前言一、回顾大学1.1 大一上1.1.1 第一个学期1.1.2 第一个寒假1.2 大一下1.2.1 第二个学期1.2.2 第一个暑假1.3 大二上1.3.1 第三个学期1.3.2 第二个寒假1.4 大二下1.4.1 第四个学期1.4.2 第二个暑假1.5 大三上1.5.1 第五个学期1.5.2 第三个寒假1.6 大三下1.6.1 第六个…

Java -- 每日一问:Java并发包提供了哪些并发工具类?

典型回答 我们通常所说的并发包也就是 java.util.concurrent 及其子包&#xff0c;集中了 Java 并发的各种基础工具类&#xff0c;具体主要包括几个方面&#xff1a; 提供了比 synchronized 更加高级的各种同步结构&#xff0c;包括 CountDownLatch、CyclicBarrier、Semaphore…