![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
萌之上荡漾
这个作者很懒,什么都没留下…
展开
-
hdu 5876 ACM/ICPC Dalian Online 1009 Sparse Graph
题目链接分析:这叫补图上的BFS,萌新第一次遇到= =。方法很简单,看了别人的代码后,自己也学会了。方法就是开两个集合,一个A表示在下一次bfs中能够到达的点,另一个B就是下一次bfs中到不了的点。一开始先把出了起点的所有点都加入A,然后从bfs的点跑一遍边, 把边相连的点从A中取出放到B中。然后遍历A集合,进行bfs。然后把B全部放入A中,清空B。于是又回到了通过边把边连接的点从A移动到B,重复b原创 2016-09-11 20:19:57 · 290 阅读 · 0 评论 -
hdu 5961 传递 ccpc 2016 合肥站
传送门分析: 这道题非常有趣。。 可以这样想: 对于一个传递的图,那么对于∀a,b,c∈V\forall a,b,c \in V,如果a−>b,b−>ca -> b, b -> c,那么a−>ca -> c。画一个图可以看出来,这个的话从一个点出发一定只有两层的深度。这很好理解。那么就bfs一下,如果搜索的深度大于2就返回falsefalse就行了。这道题要mark一下。代码:/*******原创 2016-11-06 21:20:38 · 342 阅读 · 0 评论 -
codeforces 570D Tree Requests
题目链接分析:之前学习到了一种做法,将树上的dfs序和bfs序都计算出来,主要用到bfs序。通过bfs序可以找到对应层数的所有节点,然后通过dfs序范围确定符合要求节点的范围长度,这一点可以用二分来确定左右区间范围。然后就是判断区间里的字母个数为奇的是否小于等于1。我用了数组预处理了每个字母的前缀和,在写题解的时候想到可以用int二进制表示。代码:/*************************原创 2017-02-16 22:26:56 · 249 阅读 · 0 评论 -
hdu 5094 Maze
题目链接分析: 把十把钥匙的状态进行二进制压缩,然后就是bfs了。 坑点就是两个点之间可能有很多门,一个地方可能有多把钥匙。之前一直WA,我看了题解才做对= =代码:#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <stack>#include <queue>using na原创 2017-05-06 14:28:15 · 287 阅读 · 0 评论