DFS/BFS
文章平均质量分 62
搜索类题目
柃歌
夏天的海边有冰淇淋口味的海风
展开
-
AcWing 3483. 2的幂次方(DFS)
【题目描述】每个正数都可以用指数形式表示。例如,137=27+23+20137=27+23+20137=27+23+20。让我们用a(b)a(b)a(b)来表示aba^bab。那么137137137可以表示为2(7)+2(3)+2(0)2(7)+2(3)+2(0)2(7)+2(3)+2(0)。因为7=22+2+207=22+2+207=22+2+20,3=2+203=2+203=2+20,所以137137137最终可以表示为2(2(2)+2+2(0))+2(2+2(0))+2(0)2(2(2)+2原创 2022-04-18 10:11:16 · 160 阅读 · 0 评论 -
AcWing 3502. 不同路径数(DFS)
【题目描述】给定一个n×mn×mn×m的二维矩阵,其中的每个元素都是一个[1,9][1,9][1,9]之间的正整数。从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。走了kkk次后,经过的元素会构成一个(k+1)(k+1)(k+1)位数。请求出一共可以走出多少个不同的(k+1)(k+1)(k+1)位数。【输入格式】第一行包含三个整数n,m,kn,m,kn,m,k。接下来nnn行,每行包含mmm个空格隔开的整数,表示给定矩阵。【输出格式】输出一个整数,表示可以原创 2022-04-15 11:29:03 · 463 阅读 · 0 评论 -
【蓝桥杯算法练习题】双指针、BFS与图论
一、AcWing 1238. 日志统计【题目描述】小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有NNN行。其中每一行的格式是:ts id表示在tststs时刻编号ididid的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为DDD的时间段内收到不少于KKK个赞,小明就认为这个帖子曾是”热帖”。具体来说,如果存在某个时刻TTT满足该帖在[T,T+D)[T,T+D)[T,T+D)这段时间内(注意是左闭右开区间)收到不少于KKK个赞,该原创 2022-03-26 11:05:43 · 1112 阅读 · 0 评论 -
AcWing 1497. 树的遍历(递归建树)
【题目描述】一个二叉树,树中每个节点的权值互不相同。现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。【输入格式】第一行包含整数NNN,表示二叉树的节点数。第二行包含NNN个整数,表示二叉树的后序遍历。第三行包含NNN个整数,表示二叉树的中序遍历。【输出格式】输出一行NNN个整数,表示二叉树的层序遍历。【数据范围】1≤N≤301≤N≤301≤N≤30官方并未给出各节点权值的取值范围,为方便起见,在本网站范围取为1∼N1\sim N1∼N。【输入样例】72 3 1 5 7 6原创 2022-03-14 15:11:01 · 952 阅读 · 0 评论 -
【模板题】树与图的广度优先遍历
一、AcWing 847. 图中点的层次【题目描述】给定一个nnn个点mmm条边的有向图,图中可能存在重边和自环。所有边的长度都是111,点的编号为1∼n1\sim n1∼n。请你求出111号点到nnn号点的最短距离,如果从111号点无法走到nnn号点,输出−1-1−1。【输入格式】第一行包含两个整数nnn和mmm。接下来mmm行,每行包含两个整数aaa和bbb,表示存在一条从aaa走到bbb的长度为111的边。【输出格式】输出一个整数,表示111号点到nnn号点的最短距离。【数据范围】原创 2022-03-14 08:23:36 · 213 阅读 · 0 评论 -
【模板题】树与图的深度优先遍历
一、AcWing 846. 树的重心【题目描述】给定一颗树,树中包含nnn个结点(编号1∼n1\sim n1∼n)和n−1n-1n−1条无向边。请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余各个连通块中点数的最大值最小,那么这个节点被称为树的重心。【输入格式】第一行包含整数nnn,表示树的结点数。接下来n−1n-1n−1行,每行包含两个整数aaa和bbb,表示点aaa和点bbb之间存在一条边。【输出格式】输出一原创 2022-03-14 08:18:15 · 243 阅读 · 0 评论 -
洛谷P2296 寻找道路(图论,BFS)
【题目描述】在有向图GGG中,每条边的长度均为111,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:路径上的所有点的出边所指向的点都直接或间接与终点连通。在满足条件111的情况下使路径最短。注意:图GGG中可能存在重边和自环,题目保证终点没有出边。请你输出符合条件的路径的长度。【输入格式】第一行有两个用一个空格隔开的整数nnn和mmm,表示图有nnn个点和mmm条边。接下来的mmm行每行222个整数x,yx,yx,y,之间用一个空格隔开,表示有一条边从点xxx指向原创 2022-03-10 13:29:14 · 202 阅读 · 0 评论 -
洛谷P1346 电车(双端队列BFS)
【题目描述】在一个神奇的小镇上有着一个特别的电车网络,它由一些路口和轨道组成,每个路口都连接着若干个轨道,每个轨道都通向一个路口(不排除有的观光轨道转一圈后返回路口的可能)。在每个路口,都有一个开关决定着出去的轨道,每个开关都有一个默认的状态,每辆电车行驶到路口之后,只能从开关所指向的轨道出去,如果电车司机想走另一个轨道,他就必须下车切换开关的状态。为了行驶向目标地点,电车司机不得不经常下车来切换开关,于是,他们想请你写一个程序,计算一辆从路口AAA到路口BBB最少需要下车切换几次开关。【输入格式】原创 2022-03-09 13:05:33 · 236 阅读 · 0 评论 -
洛谷P1330 封锁阳光大学(二分图,搜索)
【题目描述】曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。阳光大学的校园是一张由nnn个点构成的无向图,nnn个点之间由mmm条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在这些道路上刷街了。非常悲剧的一点是,河蟹是一种不和谐的生物,当两只河蟹封锁了相邻的两个点时,他们会发生冲突。询问:最少需要多少只河蟹,可以封锁所有道路并且不发生冲突。【输入格式】第一行两个正原创 2022-03-08 21:57:42 · 217 阅读 · 0 评论 -
洛谷P1562 还是N皇后(DFS,位运算)
【题目描述】正如题目所说,这题是著名的N皇后问题。【输入格式】第一行有一个NNN。接下来有NNN行NNN列描述一个棋盘,*表示可放,.表示不可放。【输出格式】输出方案总数。【数据范围】0<n≤140<n\le 140<n≤14【输入样例】4**.*************【输出样例】1【分析】如果用传统的N皇后搜索解法会超时,因此需要考虑使用位运算进行优化。使用col,dg,udgcol,dg,udgcol,dg,udg来分别表示每一列、正对角线以原创 2022-03-07 21:49:44 · 474 阅读 · 0 评论 -
洛谷P1605 迷宫(DFS)
【题目描述】给定一个N∗MN*MN∗M方格的迷宫,迷宫里有TTT处障碍,障碍处不可通过。给定起点坐标和终点坐标,问:每个方格最多经过111次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。【输入格式】第一行N,MN,MN,M和TTT,NNN为行,MMM为列,TTT为障碍总数。第二行起点坐标SX,SYS_X,S_YSX,SY,终点坐标FX,FYF_X,F_YFX,FY。接下来TTT行,每行为障碍点的坐标。【输出格式】给定起点原创 2022-03-04 14:20:01 · 134 阅读 · 0 评论 -
洛谷P1479 宿舍里的故事之五子棋(DFS)
【题目描述】在一个5∗55*55∗5的棋盘内,放上nnn颗棋子,其中(5≤n≤25)(5\le n\le 25)(5≤n≤25)。这nnn颗棋子可以放到棋盘内的任何一个地方,但是不能有多颗棋子放在同一个地方。于是呼,便会有五颗棋子排成一行、一列或两条对角线,不同的放法,就会出现不同数量的五子排列。本题你要做的是,给你一个nnn,你找出不同放法出现的所有可能的五子排列数量(设为kkk),如:当n=11n=11n=11时,有以下两种情况(111是棋子,000是空格):1 1 1 0 0原创 2022-03-04 10:50:30 · 433 阅读 · 0 评论 -
【蓝桥杯算法练习题】递归与递推
一、AcWing 92. 递归实现指数型枚举【题目描述】从1∼n1\sim n1∼n这nnn个整数中随机选取任意多个,输出所有可能的选择方案。【输入格式】输入一个整数nnn。【输出格式】每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好111个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。【数据范围】1≤n≤151≤n≤151≤n≤15【输入样例】3【输出样例】322 311 31 21 2原创 2022-02-24 22:36:43 · 4461 阅读 · 0 评论 -
【算法题归纳合集】搜索-DFS之剪枝与优化
一、AcWing 165. 小猫爬山【题目描述】翰翰和达达饲养了NNN只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为WWW,而NNN只小猫的重量分别是C1,C2,…,CNC_1,C_2,\dots ,C_NC1,C2,…,CN。当然,每辆缆车上的小猫的重量之和不能超过WWW。每租用一辆缆车,翰翰和达达就要付111美元,所以他们想知道,最少需要付多原创 2022-02-23 15:42:56 · 815 阅读 · 0 评论 -
AcWing 2005. 马蹄铁(DFS)
【题目描述】尽管奶牛贝茜发现每个平衡括号字符串都很美观,但她特别喜欢被她称为“完全”平衡的括号字符串——是一个由(构成的字符串后接一个长度相同的)构成的字符串。例如:(((())))有一天,当贝茜穿过牛棚时,她发现地面上有一个N×NN×NN×N的马蹄铁矩阵。每个马蹄铁的方向都看上去像(或)。从矩阵的左上角开始,贝茜希望四处走动以拾起马蹄铁,使得她捡起的马蹄铁按顺序构成的括号字符串是完全平衡的。请计算她能得到的最长完全平衡括号字符串的长度。每一步中,贝茜可以沿上下左右四个方向移动。她只能移动原创 2022-01-26 12:05:19 · 161 阅读 · 0 评论 -
AcWing 2019. 拖拉机(双端队列BFS)
【题目描述】干了一整天的活,农夫约翰完全忘记了他把拖拉机落在田地中央了。他的奶牛非常调皮,决定对约翰来场恶作剧。她们在田地的不同地方放了NNN捆干草,这样一来,约翰想要开走拖拉机就必须先移除一些干草捆。拖拉机的位置以及NNN捆干草的位置都是二维平面上的整数坐标点。拖拉机的初始位置上没有干草捆。当约翰驾驶拖拉机时,他只能沿平行于坐标轴的方向(北,南,东和西)移动拖拉机,并且拖拉机必须每次移动整数距离。例如,驾驶拖拉机先向北移动222单位长度,然后向东移动333单位长度。拖拉机无法移动到干草捆占原创 2022-01-26 10:35:55 · 142 阅读 · 0 评论 -
AcWing 2060. 奶牛选美(双端队列BFS)
【题目描述】听说最近两斑点的奶牛最受欢迎,约翰立即购进了一批两斑点牛。不幸的是,时尚潮流往往变化很快,当前最受欢迎的牛变成了一斑点牛。约翰希望通过给每头奶牛涂色,使得它们身上的两个斑点能够合为一个斑点,让它们能够更加时尚。牛皮可用一个N×MN×MN×M的字符矩阵来表示,如下所示:..................XXXX....XXX......XXXX....XX....XXXX......XXX..........XXXXX............XXX....其中,X表示斑点原创 2022-01-25 21:39:06 · 421 阅读 · 2 评论 -
AcWing 1855. 愤怒的奶牛(BFS)
【题目描述】奶牛贝茜设计了一款她认为必火的游戏:愤怒的奶牛。游戏设定(她坚信这是她的原创)是玩家用一个弹弓将一头奶牛射向一个数轴,数轴的不同位置上分布着一些干草捆。奶牛以足够的力量砸向某个干草捆,并使得该干草捆发生爆炸,爆炸可能会不断引起连锁反应,导致更多的干草捆发生爆炸。目标是用一头奶牛引起的连锁反应引爆尽可能多的干草捆。共有NNN个干草捆位于数轴中的不同整数位置,其坐标依次为x1,x2,…,xNx_1,x_2,\dots ,x_Nx1,x2,…,xN。如果将奶牛射向位于位置xxx的干草原创 2022-01-25 14:36:00 · 314 阅读 · 0 评论 -
【算法题归纳合集】搜索-DFS之搜索顺序
一、AcWing 1116. 马走日二、AcWing 1117. 单词接龙三、AcWing 1118. 分成互质组原创 2022-01-24 22:05:54 · 257 阅读 · 0 评论 -
【算法题归纳合集】搜索-DFS之连通性模型
一、AcWing 1112. 迷宫【题目描述】一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n∗nn∗nn∗n的格点组成,每个格点只有222种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点AAA走到点BBB,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。注意:A,BA,BA,B不一定是两个不同的点。【输原创 2022-01-23 22:36:33 · 395 阅读 · 0 评论 -
PTA 校选拔 7-10 宇航员的寻宝图(BFS)
【题目描述】宇航员为了能够到达宇宙飞船发射场,必须拥有足够的晶体,以获得能量。但是他们获得晶体并不容易,晶体被隐藏在某个地方。为了帮助宇航员得到晶体,现在有一张藏宝图,宇航员可以根据藏宝图寻找晶体。藏宝图由三种符号组成:'⋅'、'#'、'$'。符号'⋅'表示该位置是空的,宇航员可以通过;符号'#'表示该位置有石头阻挡,宇航员无法通过;符号'$'表示该位置有111个晶体,宇航员可以得到晶体并通过。藏宝图外面的位置都是空的,可以自由通行。宇航员可以上下左右移动,但不能以一定角度移动。首先,宇航原创 2021-12-19 11:04:08 · 370 阅读 · 0 评论 -
【算法题归纳合集】搜索-A*
一、AcWing 179. 八数码【题目描述】在一个3×33×33×3的网格中,1∼81∼81∼8这888个数字和一个xxx恰好不重不漏地分布在这3×33×33×3的网格中。例如:1 2 3x 4 67 5 8在游戏过程中,可以把xxx与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 x例如,示例中图形就可以通过让xxx先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:原创 2021-11-01 22:02:22 · 330 阅读 · 0 评论 -
【算法题归纳合集】搜索-双向广搜
一、AcWing 190. 字串变换【题目描述】已知有两个字串A,BA, BA,B及一组字串变换的规则(至多666个规则):A1→B1A_1→B_1A1→B1A2→B2A_2→B_2A2→B2…\dots…规则的含义为:在AAA中的子串A1A_1A1可以变换为B1B_1B1、A2A_2A2可以变换为B2…B_2\dotsB2…例如:A=A=A=abcd,B=B=B=xyz。变换规则为:abc→→→xu、ud→→→y、y→→→yz。则此时,AAA可以经过一系列的变换变为BB原创 2021-11-01 18:10:04 · 205 阅读 · 0 评论 -
【算法题归纳合集】搜索-双端队列广搜
一、AcWing 175. 电路维修【题目描述】电路板的整体结构是一个RRR行CCC列的网格(R,C≤500)(R,C≤500)(R,C≤500),如下图所示。每个格点都是电线的接点,每个格子都包含一个电子元件。电子元件的主要部分是一个可旋转的、连接一条对角线上的两个接点的短电缆。在旋转之后,它就可以连接另一条对角线的两个接点。电路板左上角的接点接入直流电源,右下角的接点接入飞行车的发动装置。达达发现因为某些元件的方向不小心发生了改变,电路板可能处于断路的状态。她准备通过计算,旋转最少数量原创 2021-11-01 17:57:46 · 210 阅读 · 0 评论 -
【算法题归纳合集】搜索-最小步数模型
前言最小步数模型与最短路模型不一样,最短路模型是指在一个固定的状态下从某个点转移到另一个点的最小步数;而最小步数模型是指从某个状态转变为另一个状态的最小步数。一、AcWing 1107. 魔板【题目描述】Rubik先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有888个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这888种颜色用前888个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针原创 2021-10-29 17:07:46 · 325 阅读 · 0 评论 -
【算法题归纳合集】搜索-多源BFS
一、AcWing 173. 矩阵距离【题目描述】给定一个NNN行MMM列的010101矩阵AAA,A[i][j]A[i][j]A[i][j]与A[k][l]A[k][l]A[k][l]之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣输出一个NNN行MMM列的整数矩阵BBB,其中:B[i][j]=min1≤x≤N,1≤y≤M,A原创 2021-10-29 14:51:26 · 162 阅读 · 0 评论 -
【算法题归纳合集】搜索-最短路模型
一、AcWing 1076. 迷宫问题【题目描述】给定一个由0,10,10,1组成的n×nn×nn×n的二维数组。它表示一个迷宫,111表示墙壁,000表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。数据保证至少存在一条从左上角走到右下角的路径。【输入格式】第一行包含整数nnn。接下来nnn行,每行包含nnn个整数000或111,表示迷宫。【输出格式】输出从左上角到右下角的最短路线,如果答案不唯一,输出任意一条路径均可。按顺序,每行输出一个路径中原创 2021-10-29 13:39:49 · 197 阅读 · 0 评论 -
【算法题归纳合集】搜索-Flood Fill
一、AcWing 1097. 池塘计数【题目描述】农夫约翰有一片N∗MN*MN∗M的矩形土地。最近,由于降雨的原因,部分土地被水淹没了。现在用一个字符矩阵来表示他的土地。每个单元格内,如果包含雨水,则用W表示,如果不含雨水,则用.表示。现在,约翰想知道他的土地中形成了多少片池塘。每组相连的积水单元格集合可以看作是一片池塘。每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。请你输出共有多少片池塘,即矩阵中共有多少片相连的W块。【输入格式】第一行包含两个整数NNN原创 2021-10-28 22:24:28 · 190 阅读 · 0 评论 -
AcWing 1432. 棋盘挑战(DFS,N皇后问题)
【题目描述】给定一个N×NN×NN×N的棋盘,请你在上面放置NNN个棋子,要求满足:每行每列都恰好有一个棋子每条对角线上都最多只能有一个棋子 1 2 3 4 5 6 -------------------------1 | | O | | | | | -------------------------2 | | | | O | | | -------------------------3 | | |原创 2021-10-24 22:26:51 · 98 阅读 · 0 评论 -
AcWing 1113. 红与黑(Flood Fill)
【题目描述】有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。【输入格式】输入包括多个数据集合。每个数据集合的第一行是两个整数WWW和HHH,分别表示xxx方向和yyy方向瓷砖的数量。在接下来的HHH行中,每行包括WWW个字符。每个字符表示一块瓷砖的颜色,规则如下‘.’:黑色的瓷砖;‘#’:红色的瓷砖;‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每原创 2021-10-24 16:37:42 · 89 阅读 · 0 评论 -
洛谷P1141 01迷宫(DFS)
【题目描述】有一个仅由数字000与111组成的n×nn \times nn×n格迷宫。若你位于一格000上,那么你可以移动到相邻444格中的某一格111上,同样若你位于一格111上,那么你可以移动到相邻444格中的某一格000上。你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。【输入格式】第111行为两个正整数n,mn,mn,m。下面nnn行,每行nnn个字符,字符只可能是000或者111,字符之间没有空格。接下来mmm行,每行222个用空格分隔的正整数i,ji,ji原创 2021-10-23 16:46:22 · 253 阅读 · 0 评论 -
洛谷P1025 [NOIP2001 提高组] 数的划分(DP)
【题目描述】将整数nnn分成kkk份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7,k=3n=7,k=3n=7,k=3,下面三种分法被认为是相同的。1,1,51,1,51,1,51,5,11,5,11,5,15,1,15,1,15,1,1问有多少种不同的分法。【输入格式】n,k(6<n≤200,2≤k≤6)n,k(6<n \le 200,2 \le k \le 6)n,k(6<n≤200,2≤k≤6)【输出格式】111个整数,即不同的分法。【输入样例原创 2021-10-20 11:31:57 · 324 阅读 · 0 评论 -
洛谷P1077 摆花(DP,记忆化搜索)
【题目描述】小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共mmm盆。通过调查顾客的喜好,小明列出了顾客最喜欢的nnn种花,从111到nnn标号。为了在门口展出更多种花,规定第iii种花不能超过aia_iai 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。试编程计算,一共有多少种不同的摆花方案。【输入格式】第一行包含两个正整数nnn和mmm,中间用一个空格隔开。第二行有nnn个整数,每两个整数之间用一个空格隔开,依次表示a1,a2,⋯ ,ana_1,a原创 2021-10-17 10:01:15 · 206 阅读 · 0 评论 -
【模板题】记忆化搜索(滑雪)
【题目描述】给定一个RRR行CCC列的矩阵,表示一个矩形网格滑雪场。矩阵中第iii行第jjj列的点表示滑雪场的第iii行第jjj列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一条可行的滑行原创 2021-10-13 17:25:07 · 117 阅读 · 0 评论 -
【模板题】二分图的最大匹配(匈牙利算法)
【题目描述】给定一个二分图,其中左半部包含n1n_1n1个点(编号1∼n11∼n_11∼n1),右半部包含n2n_2n2个点(编号 1∼n21∼n_21∼n2),二分图共包含mmm条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图GGG,在GGG的一个子图MMM中,MMM的边集{EEE}中的任意两条边都不依附于同一个顶点,则称MMM是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最原创 2021-10-09 09:19:51 · 169 阅读 · 0 评论 -
【模板题】染色法判定二分图(DFS遍历图)
【题目描述】给定一个n个点m条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。【输入格式】第一行包含两个整数n和m。接下来m行,每行包含两个整数u和v,表示点u和点v之间存在一条边。【输出格式】如果给定图是二分图,则输出Yes,否则输出No。【数据范围】1≤n,m≤1e5【输入样例】4 41 31 42 32 4【输出样例】Yes#include <iostream>#include <cstring>#include &l原创 2021-10-08 19:48:55 · 239 阅读 · 0 评论 -
【模板题】广度优先搜索(BFS)
一、走迷宫问题【题目描述】给定一个n×m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n,m)处,至少需要移动多少次。数据保证(1,1)处和(n,m)处的数字为0,且一定至少存在一条通路。【输入格式】第一行包含两个整数n和m。接下来n行,每行包含m个整数(0或1),表示完整的二维数组迷宫。【输出格式】输出一个整原创 2021-10-08 10:31:06 · 210 阅读 · 0 评论 -
【模板题】深度优先搜索(DFS)
一、全排列问题【题目描述】给定一个整数n,将数字1∼n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。【输入格式】共一行,包含一个整数n。【输出格式】按字典序输出所有排列方案,每个方案占一行。【数据范围】1≤n≤7【输入样例】3【输出样例】1 2 31 3 22 1 32 3 13 1 23 2 1#include <iostream>using namespace std;const int N = 10;int n,原创 2021-10-08 10:23:46 · 638 阅读 · 0 评论 -
洛谷P1123 取数游戏(DFS)
【题目描述】一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。【输入格式】第1行有一个正整数T,表示了有T组数据。对于每一组数据,第一行有两个正整数N和M,表示了数字矩阵为N行M列。接下来N行,每行M个非负整数,描述了这个数字矩阵。【输出格式】T行,每行一个非负整数,输出所求得的答案。【输入样例】34 467 75 63 1029 29 92 14原创 2021-03-23 13:39:57 · 251 阅读 · 0 评论 -
洛谷P1746 离开中山路(BFS)
【题目描述】BFS模板题,直接上代码#include<bits/stdc++.h>using namespace std;typedef pair<int, int> P;const int MAX = 1005;const int INF = 0x3f3f3f3f;char m[MAX][MAX];int n, sx, sy, gx, gy;int dis[MAX][MAX];int dx[4] = { 0,1,0,-1 }, dy[4] = { 1,0,-原创 2021-03-20 10:17:34 · 240 阅读 · 0 评论