图论 DFS
DFS
柏油
不负冬日春晓 不负青春韶华
展开
-
Tree UVA 548(DFS)
解题思路:对于给定的二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据后序遍历找到树根。然后在中序遍历中找到树根,从而找出左右子树的结点列表,然后递归构造左右子树。本题最不容易理解的就是构造树,当然需要耐下心来仔细理解#include#include#includeusing namespace std;const int maxn=10000+10;int in原创 2017-01-09 08:50:31 · 194 阅读 · 0 评论 -
nyoj 325 zb的生日(dfs)
zb的生日时间限制:3000 ms | 内存限制:65535 KB难度:2描述 今天是阴历七月初五,acm队员zb的生日。zb正在和C小加、never在武汉集训。他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb立刻下定决心买了一堆西瓜。当他准备把西瓜送给C小加和never的时候,遇到了一个难题,never和C小加原创 2017-04-03 11:37:32 · 404 阅读 · 0 评论 -
HDU 1016 Prime Ring Problem(dfs)
Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 47896 Accepted Submission(s): 21158Problem DescriptionA ring is原创 2017-03-16 22:28:16 · 182 阅读 · 0 评论 -
HDU 1213 How Many Tables (dfs求联通块 || 并查集)
这题真打脸,比赛的时候愣是没写出来(因为当天写了蓝桥杯上的历届试题--剪格子,这题数据很水,被搞晕了),现在回过头来看看,很简单,就是单纯找联通块,。AC代码:#include#includeusing namespace std;const int maxn=1000+10;int g[maxn][maxn];int vis[maxn];int n,m;void dfs(原创 2017-03-16 11:03:05 · 454 阅读 · 0 评论 -
nyoj 20 吝啬的国度 (dfs)
吝啬的国度时间限制:1000 ms | 内存限制:65535 KB难度:3描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。输入第一行输入一个整数M表示测试数据共有M(1每组测试数据的第一行输入一个正整数原创 2017-04-10 22:42:59 · 271 阅读 · 0 评论 -
nyoj 677 碟战 (dfs)
碟战时间限制:2000 ms | 内存限制:65535 KB难度:4描述 知己知彼,百战不殆!在战争中如果被敌人掌握了自己的机密,失败是必然的。K国在一场战争中屡屡失败,就想到自己的某些城市可能会有敌方的间谍。在仔细调查后,终于得知在哪些城市存在间谍。当然这个消息也被敌方间谍得知,所以间谍们开始撤离,试图到达K国唯一机场,然后抢夺飞机回国。由于城市内部比较复杂,K国领导原创 2017-04-10 22:06:47 · 287 阅读 · 1 评论 -
蓝桥杯 历届试题 大臣的旅费 (两次dfs 之树上求最长路径)
分析:这题刚开始用一个二维数组储存从城市i到城市j,dfs很容易就写出来,但是只得了 75分,原因据说是最后一组数据在10000左右,二维数组明显开不下;好吧,就用vector容器来储存,但是呢我又采用的是把每个点都进行dfs遍历,这个做法就超时了,看了网上一些题解,原来只需要用两个点进行dfs遍历,首先任意找一个点,进行dfs找到最长路径,把端点记下,然后再从该端点进行dfs,得到的最长路就是要原创 2017-03-15 17:55:10 · 897 阅读 · 0 评论 -
nyoj 1282 部分和问题(入门题)(dfs)
部分和问题(入门题)时间限制:1000 ms | 内存限制:65535 KB难度:0描述 给你n个数(a1,a2,a3.......an) ,是否存在某一些数字加起来等于k,有就输出 "YES",否则输出 "NO"。数据范围:na1+a2+....an在int范围里面.输入多组输入每组第一行输入两个数n,k第二行输入n个数a1 a2 ...... an输原创 2017-03-24 12:39:39 · 580 阅读 · 2 评论 -
蓝桥杯 算法提高 排列数 (康拓展开的逆运算 || dfs || next_permutation(a,a+10))
算法提高 排列数 时间限制:1.0s 内存限制:256.0MB 问题描述 0、1、2三个数字的全排列有六种,按照字母序排列如下: 012、021、102、120、201、210 输入一个数n 求0~9十个数的全排列中的第n个(第1个为0123456789)。输入格式 一行,包含一个整数n输出格式 一行,原创 2017-03-31 13:49:43 · 566 阅读 · 0 评论 -
nyoj 42 一笔画问题(欧拉通路+dfs || 并查集)
一笔画问题时间限制:3000 ms | 内存限制:65535 KB难度:4描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输出如果存在符原创 2017-03-23 16:44:44 · 387 阅读 · 0 评论 -
nyoj 27 水池数目(dfs求连通块)
水池数目时间限制:3000 ms | 内存限制:65535 KB难度:4描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地图上仅标识了此处是否是水池,现在,你的任务来了,请用计算机算出该地图中共有几个水池。输入第一行输入一个整数N,表示共有N组测试数据每一组数据都是先输入该地图的行数m(0输出输出该地图中水原创 2017-04-05 22:42:25 · 329 阅读 · 0 评论 -
Vjudge Prime Ring Problem (dfs)
A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number原创 2017-11-19 21:34:50 · 212 阅读 · 0 评论 -
Vjudge Oil Deposits 油田问题(dfs)
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides th原创 2017-11-19 20:43:17 · 256 阅读 · 0 评论 -
计蒜客 强迫症的吃货 (dfs+枚举)
晓萌作为一个营养学专家,吃东西的时候总是要考虑是否能满足他的各种营养物质需求,大家都说他是一个有强迫症的吃货。晓萌知道每种食品中营养物质的含量,请你帮他安排食谱,以保持他获得所需营养物质的同时,吃的食品的种类最少。(营养物质含量为整数,每种食品晓萌只吃一次)。输入第1行为一个整数V表示晓萌需要的营养物质的种类数(1≤V≤25)。输入第2行包括用空格分隔开的V个整数,依次表示每种营养物质的需原创 2017-05-21 10:29:38 · 872 阅读 · 4 评论 -
hihoCoder 1054 : 滑动解锁(dfs)
#1054 : 滑动解锁时间限制:2000ms单点时限:1000ms内存限制:256MB描述滑动解锁是智能手机一项常用的功能。你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点。这些划过的点所组成的有向折线,如果与预设的折线在图案、方向上都一致,那么手机将解锁。两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经原创 2017-04-27 22:19:03 · 293 阅读 · 0 评论 -
hihoCoder 1322 : 树结构判定 (dfs 或 并查集)
#1322 : 树结构判定时间限制:10000ms单点时限:1000ms内存限制:256MB描述给定一个包含 N 个顶点 M 条边的无向图 G ,判断 G 是不是一棵树。输入第一个是一个整数 T ,代表测试数据的组数。 (1 ≤ T ≤ 10)每组测试数据第一行包含两个整数 N 和 M 。(2 ≤ N ≤ 500, 1 ≤原创 2017-05-16 22:30:15 · 335 阅读 · 0 评论 -
hihoCoder 1041 : 国庆出游 (dfs+bitset 很不错的题!)
#1041 : 国庆出游时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho准备国庆期间去A国旅游。A国的城际交通比较有特色:它共有n座城市(编号1-n);城市之间恰好有n-1条公路相连,形成一个树形公路网。小Hi计划从A国首都(1号城市)出发,自驾遍历所有城市,并且经过每一条公路恰好两次——来回各一次——这样公原创 2017-05-06 17:08:17 · 410 阅读 · 1 评论 -
计蒜客 跳跃游戏(dfs)
给定一个非负整数数组,假定你的初始位置为数组第一个下标。数组中的每个元素代表你在那个位置能够跳跃的最大长度。请确认你是否能够跳跃到数组的最后一个下标。例如:A=[2,3,1,1,4]A = [2,3,1,1,4]A=[2,3,1,1,4] 能够跳跃到最后一个下标,输出true;A=[3,2,1,0,4]A = [3,2,1,0,4]A=[3,2,1,0,4] 不能跳跃到最后原创 2017-05-13 21:02:08 · 340 阅读 · 0 评论 -
hihoCoder 1050 : 树中的最长路 (dfs)
#1050 : 树中的最长路时间限制:10000ms单点时限:1000ms内存限制:256MB描述上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已。但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他原创 2017-05-11 13:52:48 · 442 阅读 · 0 评论 -
蓝桥杯 历届试题 邮局 (dfs得了40分,其他数据超时,代码贴出来以后改正)
历届试题 邮局 时间限制:1.0s 内存限制:256.0MB 问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流。为了方便村民们发信,C村打算在C村建设k个邮局,这样每户村民可以去离自己家最近的邮局发信。 现在给出了m个备选的邮局,请从中选出k个来,使得村民到自己家最近的邮局的距离和最小。其中两点之间的距离定义为两原创 2017-03-30 20:11:40 · 711 阅读 · 2 评论 -
蓝桥杯 算法训练 未名湖边的烦恼 (dfs)
算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场原创 2017-03-29 21:54:12 · 479 阅读 · 0 评论 -
POJ 1321 棋盘问题(dfs)
棋盘问题Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 40688 Accepted: 19847Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编原创 2017-02-14 08:40:43 · 227 阅读 · 0 评论 -
UVA 12166 Equilibrium Mobile (天平性质 + DFS)
思路:题目要求是求改变的最小,那么就需要选定一个基准砝码,选择方式如下:对于任何一个结点砝码m来说,如果选定为基准,那么整棵树的总重量为m*2^deepth (m映射重量为(mDFS 递归思想:将表达式分成两份(通过,)然后分别DFS向下递归求解#include#include#includeusing namespace std;mapmap1;int tatal;strin原创 2017-02-12 15:29:34 · 328 阅读 · 0 评论 -
HDU 2181哈密顿绕行世界问题 (简单DFS)
哈密顿绕行世界问题 HDU - 2181 #include<cstdio>int a[20+2][3+1];int path[20+2];int flag; int m;void dfs(int t,int count){ if(t==m && count==20){ path[count]=m; printf("%d: %d",flag++,...原创 2017-02-11 23:58:05 · 248 阅读 · 0 评论 -
UVA 208 Firetruck 消防车(回溯 + 剪枝)
题意:一个包含思路:刚开始直接回溯,结果超时了;从终点出发,找到所有与终点连通的结点,存储在数组aa当中,之后排序(字典序输出嘛),这样的话当从起点无法到达终点时,减少了很多结点判断(剪枝)。想象一下当一个长度为20的路径>10的时候有断点,那么从起始位置1开始,肯定没有与g[1][i]相连的路径,很快就退出dfs了。AC代码如下:#include#include#include原创 2017-02-19 22:37:06 · 457 阅读 · 0 评论 -
HDU 2611 Sequence two (dfs + 重判 + 剪枝)
2610 按照长度优先 位置次之 输出所有不递减序列 2611 按照长度优先 大小次之 输出所有不递减序列,2610的加强版思路:本题的重判和剪枝方法和2610的基本不变,不再累述;首先按照长度输出,然后当长度相同时,按照字典序最小输出(因此用sort对序列进行排序)此时要特别注意,输出的子序列元素位置对应于原序列的位置下标一定要保证是递增的,所以用结构体来存储值和下标。本题还原创 2017-02-18 17:59:17 · 311 阅读 · 2 评论 -
HDU 2610 Sequence one(dfs+剪枝)
题意:给出一个序列找满足条件的子序列:非递减+长度+位置两个重判:如果当前搜索元素是子序列的第一个元素时,从原始序列的初始位置开始到当前位置,如果当前元素已经出现过了,就不在搜索此元素了(肯定被搜索过了) :如果当前搜索元素不是子序列的第一个元素时,找到子序列中前一个元素对应原始序列的位置,从该位置的下一个到当前元素的位置,如果当前元素已经出现过了,就不在搜索原创 2017-02-18 10:41:57 · 459 阅读 · 0 评论 -
Parentheses Balance 平衡的括号 UVA 673 (DFS求解)
#include#includeconst int maxn=128+2;bool flag1=true;char s[maxn];int len1;void dfs(int &i){if(s[i]==')' || s[i]==']'){ flag1=false; return ;}else if(s[i]=='('){ while(true){ i++; if(i>=原创 2017-01-15 13:32:28 · 332 阅读 · 0 评论 -
Undraw the Trees 看图写树 UVA 10562 (DFS)
本题是一道DFS练习题 ,需要注意一些条件的判断如 '\0',n 的值 等等,详情见代码#include#includeconst int maxn=200+10;char tree[maxn][maxn];int n;void dfs(int r,int c){ printf("%c(",tree[r][c]); if(r+1 while(r+2=0 &&原创 2017-01-13 23:55:45 · 492 阅读 · 0 评论 -
HDU 1241 Oil Deposits油田问题(DFS)
#include#includeusing namespace std;const int maxn=100+10;char g[maxn][maxn];int d[maxn][maxn];int m,n;void dfs(int x,int y){ d[x][y]=1; for(int i=-1;i<=1;i++) for(int j=-1;j<=1;j++) if(原创 2017-02-14 23:11:38 · 274 阅读 · 0 评论 -
UVA 2612 Find a way(BFS)
分别计算每个人到每个KCF的最短距离,然后相加求出最短距离#include#include#includeusing namespace std;const int maxn=200+10;struct node{ int x,y; node(int x=0,int y=0):x(x),y(y){}}ny,nm;char g[maxn][maxn]; //输入路径原创 2017-02-15 09:01:25 · 223 阅读 · 0 评论 -
nyoj 1058 部分和问题(dfs+剪枝)
部分和问题时间限制:1000 ms | 内存限制:65535 KB难度:2描述 给定整数a1、a2、.......an,判断是否可以从中选出若干数,使它们的和恰好为K。输入首先,n和k,n表示数的个数,k表示数的和。接着一行n个数。(1输出如果和恰好可以为k,输出“YES”,并按输入顺序依次输出是由哪几个数的和组成,否则“NO”样例输入4 131 2 4 7原创 2017-03-22 18:51:26 · 496 阅读 · 5 评论 -
2016 蓝桥杯 省赛 剪邮票(dfs+判重)
剪邮票如【图1.jpg】, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。答案:原创 2017-03-28 14:46:44 · 626 阅读 · 7 评论 -
蓝桥杯 算法提高 拿糖果(dfs+记忆化搜索)
算法提高 拿糖果 时间限制:1.0s 内存限制:256.0MB 问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉。 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数。这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖。然后小B就可以接着拿糖。 现在小B希望知道最多可以拿多少糖。输入格式原创 2017-03-11 17:38:54 · 497 阅读 · 0 评论 -
HDU 2154 跳舞毯
由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥。 小黑买来一块圆形的毯子,把它们分成三等分,分别标上A,B,C,称之为“跳舞毯”,他的运动方式是每次都从A开始跳,每次都可以任意跳到其他块,但最后必须跳回A,且不能原地跳.为达到减肥效果,小黑每天都会坚持跳n次,有天他突然想知道当他跳n次时共几种跳法,结果想了好几天没想出来-_-现在就请你帮帮他,算出总共有原创 2017-03-11 16:33:37 · 307 阅读 · 0 评论 -
蓝桥杯 历届试题 剪格子 (dfs)
历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述如下图所示,3 x 3 的格子中填写了一些整数。+--*--+--+|10* 1|52|+--****--+|20|30* 1|*******--+| 1| 2| 3|+--+--+--+我们沿着图中的星号线剪开,得到两个部分,每个部分的原创 2017-03-11 10:40:39 · 349 阅读 · 0 评论 -
蓝桥杯 2016 省赛 方格填数 (dfs)
方格填数如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+(如果显示有问题,也可以参看【图1.jpg】)填入0~9的数字。要求:连续的两个数字不能相邻。(左右、上下、对角都算相邻)一共有多少种可能的填原创 2017-03-27 17:58:39 · 545 阅读 · 0 评论 -
HDU 1175 连连看(dfs+剪枝)
连连看Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34081 Accepted Submission(s): 8451Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下原创 2017-03-19 16:07:13 · 1028 阅读 · 0 评论 -
HDU 2614 Beat(dfs)
BeatTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1647 Accepted Submission(s): 972Problem DescriptionZty is a man that always f原创 2017-03-17 23:56:11 · 412 阅读 · 0 评论 -
51Nod -1416 两点(dfs)
题目来源: CodeForces基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”。基础级别的时候是在一个n×m单元上玩的。像这样: 每一个单元有包含一个有色点。我们将用不同的大写字母来表示不同的颜色。这个游戏的关键是要找出一个包含同一颜色的环。看上图中4个蓝点,形成了一个环。一般的,我们将一个序列 d1,d2,......原创 2018-03-26 11:09:25 · 205 阅读 · 0 评论