https://vjudge.net/contest/425321#problem/Q
题意概括
在一个网格图内,判断是否有长度至少为4的环。
思路
判断环的方法有很多种,但是这个题目可以投机取巧。
借鉴了这位大神的思路,实在是妙啊。
https://www.cnblogs.com/kindleheart/p/9296793.html
做法是:在dfs向四个方向拓展的时候,假如说此时的点是(x,y),然后拓展出一个合法的(nx,ny)。
这时候我们再拓展一次,由(nx,ny)拓展出(mx,my)。
那么(mx,my)当然是不能和(x,y)重合的。
如果(nx,ny)已经被访问过了,那么就知道一定有环。而且这个环一定长度大于等于4.
下面解释原因:
网格的特殊之处就是找不到一个长度为3的环。
在刚才的算法里面,我们已经定下了三个在环上的元素。由于没有长度为3的环,所以环的长度至少为4.问题解决。
确实妙啊。。。
因为想不到在一次dfs中拓展两次,显然拓展一次不足以判断有没有环,还需要一些别的判断工具。
代码就不放了~~~~