DFS
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
ZOJ 3811 dfs&并查集
点击打开链接题意:给n个城镇,有的城镇会发光,给出发光的城镇,然后下面有一个人走的发光的城镇的顺序,每个城镇只会发一次光,问这个人按这个顺序是否合法并且所有的城镇都被访问到思路:可以用dfs去搜索,第一个点进去,不能走的点标记一下,然后第二个发光的城镇,判断目前标记的点中有没有,有的话说明现在可以走第二个点,以此类推,最后判断城镇是否全被访问过,一会试试并查集的方法#include #i原创 2016-05-28 14:32:17 · 736 阅读 · 0 评论 -
POJ 3417 LCA+DFS
点击打开链接题意:给一个树,然后又在树上加了好多的边,现在问你删除一条原先的边和新加的边的一条,有多少中方法使得树不连通思路:对于新加的一条边来说,肯定会与之前的树形成一个环,而此时环内的所有边删除并且新加的这条变也删除就会是一种方案,而这道题是将所有新边都加入后的情况,那么我们看每条边,如果没有与它形成环的情况,那么这条边删除肯定会使得图不连通,那么情况就会加M,也就是和新加的M条边任意原创 2016-06-27 14:26:17 · 826 阅读 · 0 评论 -
HDU 5305 DFS
点击打开链接题意:有n个人和m个关系,对于每个关系有两种可能性,然后每个人的这两种关系的数量必须相同,问你共有多少分配满足条件思路:因为人比较少并且边也不多,我们可以直接暴力dfs将所有的情况全部找出来就行了,满足条件就是每个人的两种关系都相同#include #include #include #include #include using namespace std;typ原创 2016-07-02 15:13:56 · 511 阅读 · 0 评论 -
HDU 5323 DFS
点击打开链接题意:给一个线段树类型的树,问你有没有一个0到n的线段树满足有一个区间是L到R,多个的话输出n最小的思路:根据线段树的定义,m=(le+ri)>>1,然后左右区间为(le,m)(m+1,ri),这样根据le+ri的奇偶性可以向右推出这个区间可能的父区间,并且还可以根据这个推出它的向左延伸的两个可能的父区间,但是一定要有减枝,如当左端点小于0或者右区间的值已经比确定的答案还大,还原创 2016-07-04 20:36:08 · 456 阅读 · 0 评论 -
HDU 5416 dfs
点击打开链接题意:给一个树和树上的边权,然后Q个询问,每次询问树上的不同点对的路径异或值为s思路:因为a^b==c则a^c==b,所以我们以1为根建树,然后每个节点保存1到自己的异或值,然后每一个异或值都记录个数,最后询问的时候就遍历所有的点为结尾,然后看一下有多少个出现过,但是会算两遍,然后就是注意s==0的情况#include #include #include #include原创 2016-10-23 14:53:26 · 411 阅读 · 0 评论 -
POJ 3600 dfs
点击打开链接题意:给一个小矩阵和一个大矩阵,问你将大矩阵的一些行和一些列去掉后能后变成小矩阵思路:因为列数只有20,所以dfs爆搜即可,然后行就可以直接判断一下删除一些列后是否还可以满足#include #include #include #include #include using namespace std;typedef long long ll;typedef un原创 2016-10-07 15:05:29 · 476 阅读 · 0 评论