蓝桥杯备赛 | 洛谷做题打卡day5

这篇具有很好参考价值的文章主要介绍了蓝桥杯备赛 | 洛谷做题打卡day5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

蓝桥杯备赛 | 洛谷做题打卡day5

图论起航,一起来看看深(广)度优先吧 ~

【深基18.例3】查找文献

题目描述

小 K 喜欢翻看洛谷博客获取知识。每篇文章可能会有若干个(也有可能没有)参考文献的链接指向别的博客文章。小 K 求知欲旺盛,如果他看了某篇文章,那么他一定会去看这篇文章的参考文献(如果他之前已经看过这篇参考文献的话就不用再看它了)。

假设洛谷博客里面一共有 n ( n ≤ 1 0 5 ) n(n\le10^5) n(n105) 篇文章(编号为 1 到 n n n)以及 m ( m ≤ 1 0 6 ) m(m\le10^6) m(m106) 条参考文献引用关系。目前小 K 已经打开了编号为 1 的一篇文章,请帮助小 K 设计一种方法,使小 K 可以不重复、不遗漏的看完所有他能看到的文章。

这边是已经整理好的参考文献关系图,其中,文献 X → Y 表示文章 X 有参考文献 Y。不保证编号为 1 的文章没有被其他文章引用。

蓝桥杯备赛 | 洛谷做题打卡day5,蓝桥杯备赛,C++知识,蓝桥杯,职场和发展,c++,笔记,学习

请对这个图分别进行 DFS 和 BFS,并输出遍历结果。如果有很多篇文章可以参阅,请先看编号较小的那篇(因此你可能需要先排序)。

输入格式

m + 1 m+1 m+1 行,第 1 行为 2 个数, n n n m m m,分别表示一共有 n ( n ≤ 1 0 5 ) n(n\le10^5) n(n105) 篇文章(编号为 1 到 n n n)以及 m ( m ≤ 1 0 6 ) m(m\le10^6) m(m106) 条参考文献引用关系。

接下来 m m m 行,每行有两个整数 X , Y X,Y X,Y 表示文章 X 有参考文献 Y。

输出格式

共 2 行。
第一行为 DFS 遍历结果,第二行为 BFS 遍历结果。

样例 #1

样例输入 #1

8 9
1 2
1 3
1 4
2 5
2 6
3 7
4 7
4 8
7 8

样例输出 #1

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

学会利用新知,自己多试试并尝试积攒一些固定解答方案,debug,以下是我的代码 ~

#include<iostream>  //头文件不要忘记啦
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
inline int read()//二进制优化的快读 
{
	int x = 0, f = 1;
	char ch = getchar();
	while (ch < '0' || ch>'9')
	{
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9')
	{
		x = (x << 1) + (x << 3) + (ch ^ 48);
		ch = getchar();
	}
	return x * f;
}
int n, m;
bool b[100005];//定义b数组防止重复输出 
vector<int > a[100005];//STL大法好 
void dfs(int x, int r)//x表示所在点,r表示剩余未遍历的点 
{
	b[x] = true;//记录某点已经输出过 
	if (!r)//如果每个点都遍历过终止递归 
	{
		cout << x << ' ';
		return;
	}
	cout << x << ' ';//输出 
	for (int i = 0; i < a[x].size(); i++)
		if (!b[a[x][i]]) dfs(a[x][i], r - 1);//查找从x可以到的点,并遍历 
}
void bfs()
{
	queue<int> q;//还是STL 
	q.push(1); b[1] = true;//把1点放入队列中,并标记1点已经遍历过 
	while (!q.empty())
	{
		int s = q.front(); q.pop();//拿出队列首的那个点 
		cout << s << ' ';//输出 
		for (int i = 0; i < a[s].size(); i++) if (b[a[s][i]] == false) q.push(a[s][i]), b[a[s][i]] = true;//把点s所能到达的点遍历,为防止TLE和重复输出,记录已遍历过的点 
	}
}
int main()
{
	n = read();//读入 
	m = read();
	for (int i = 1; i <= m; i++)
	{
		int x, y;
		x = read();//读入
		y = read();
		a[x].push_back(y);//建图 表示x可以到y 
	}
	for (int i = 1; i <= n; i++)//把每条路所通向的点从小到大排列(题目中有要求) 
		sort(a[i].begin(), a[i].end());//快排  
	dfs(1, n);//进行深搜 从1点开始,进行n次 
	cout << endl;//换行 
	for (int i = 1; i <= n; i++) b[i] = false;//初始化 
	bfs();//进行广搜 
	return 0;
}

蓝桥杯备赛 | 洛谷做题打卡day5,蓝桥杯备赛,C++知识,蓝桥杯,职场和发展,c++,笔记,学习文章来源地址https://www.toymoban.com/news/detail-796053.html

我的一些话

  • 关于图论:ww图论确实难度要吊打之前的普通题,但人总是要学会跳出之前的泥淖,才能看见更远的星辰。或许这条路不好走,但要加油呀!学会利用新知,自己多试试并尝试积攒一些固定解答方案,大多数人的努力,其实还没有到拼天赋的程度。在一切未知之前,我们能做的便是享受当下并做自己喜欢且认为有意义的事情。
  • 总结来说思路很重要,多想想,多在草稿纸上画画,用测试数据多调试,debug后成功编译并运行出正确结果真的会感到很幸福!
  • 关于之前蓝桥杯备赛的路线和基本方法、要掌握的知识,之前的博文我都有写,欢迎大家翻阅自取~
  • 不管什么都要坚持吧,三天打鱼两天晒网无法形成肌肉记忆和做题思维,该思考的时候一定不要懈怠,今天就说这么多啦,欢迎评论留言,一起成长:)

到了这里,关于蓝桥杯备赛 | 洛谷做题打卡day5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

    目录 🌈前言: 📁 二分的概念 📁 整数二分 📁 二分的模板 📁 习题 📁 总结          这篇文章主要是准备蓝桥杯竞赛同学所写,为你更好准备蓝桥杯比赛涉及的算法知识点。不知道你是否苦恼于不知算法从何学起,苦恼于网上资料稀少,或者复杂难懂,这篇文章就是

    2024年01月18日
    浏览(55)
  • 蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)

    目录 🌈前言: 📁 高精度的概念 📁 高精度加法和其模板 📁 高精度减法和其模板 📁 高精度乘法和其模板 📁 高精度除法和其模板 📁 总结         这篇文章主要是准备蓝桥杯竞赛同学所写,为你更好准备蓝桥杯比赛涉及的算法知识点。不知道你是否苦恼于不知算法从何

    2024年01月18日
    浏览(40)
  • 蓝桥杯备赛 day 1 —— 递归 、递归、枚举算法(C/C++,零基础,配图)

    目录 🌈前言 📁 枚举的概念 📁递归的概念     例题: 1. 递归实现指数型枚举 2. 递归实现排列型枚举 3. 递归实现组合型枚举 📁 递推的概念    例题: 斐波那契数列 📁习题 1. 带分数 2. 反硬币 3. 费解的开关 📁 总结                  这篇文章主要是准备蓝桥杯竞

    2024年02月03日
    浏览(46)
  • 蓝桥杯备赛|成绩统计|排列字母|纸张尺寸

    目录   1 成绩统计 题目描述 输入描述 输出描述 输入输出样例 示例 1.1 解题思路 1.2 AC_Code Python 标程 2 排列字母 问题描述 2.1 解题思路 2.2 AC_Code Python 标程 3 纸张尺寸 问题描述 输入格式 输出格式 样例输入1 样例输出1 样例输入 2 样例输出 2 运行限制 3.1 解题思路 3.2 AC_Code P

    2023年04月09日
    浏览(41)
  • 【AcWing】蓝桥杯备赛-深度优先搜索-dfs(1)

    目录 写在前面: 题目:92. 递归实现指数型枚举 - AcWing题库 读题: 输入格式: 输出格式: 数据范围: 输入样例: 输出样例: 解题思路: 代码: AC !!!!!!!!!! 写在最后: 距离蓝桥杯已经不足一个月了, 根据江湖上的传言, 蓝桥杯最喜欢考的是深度优先搜索和

    2024年02月03日
    浏览(54)
  • 蓝桥杯备赛之动态规划篇——涂色问题(区间DP)

    2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现) 2023第十四届蓝桥杯模拟赛第三期个人题解(Java实现) 蓝桥杯备赛之动态规划篇——背包问题 蓝桥杯真题——单词分析(Java实现) 😘😘 哈喽,大家好!这里是蓝桥杯系列文章的动态规划章节🔥🔥,今天要讲解的是区

    2024年01月23日
    浏览(48)
  • 【蓝桥杯备赛Java组】语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月21日
    浏览(70)
  • 【蓝桥杯备赛Java组】第一章·语言基础|竞赛常用库函数|输入输出|String的使用|常见的数学方法|大小写转换

    🎥 个人主页:深鱼~ 🔥收录专栏:蓝桥杯 🌄欢迎 👍点赞✍评论⭐收藏 目录 一、编程基础 1.1 Java类的创建  1.2 Java方法  1.3 输入输出  1.4 String的使用 二、竞赛常用库函数 1.常见的数学方法 2.大小写转换 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

    2024年01月19日
    浏览(72)
  • Day5力扣打卡

    链接 思路:由于任意行 i 与 列 j,满足对角线上 i == j + t 的关系,t 的范围为 [1 - n, m - 1],设 s = t + n,可以得到 s的范围为 [1, n + m - 1],对应 m x n 矩阵上所有的 n + m - 1 条对角线,以及 i - s + n == j 的关系,根据 i 的范围 [0, m - 1] 可以推出对角线在 [1, n + m - 1] 范围下的 j 的取

    2024年02月07日
    浏览(40)
  • 算法打卡|Day5 哈希表part01

    今日任务 ● 哈希表理论基础 ● 242.有效的字母异位词 ● 349. 两个数组的交集 ● 202. 快乐数 ● 1. 两数之和 目录 哈希表 part01 链表理论基础 Problem: 242. 有效的字母异位词 思路 解题方法 Code Problem: 349. 两个数组的交集 思路 解题方法 Code Problem: 202. 快乐数 思路 解题方法 Code P

    2024年02月08日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包