题目的大概意思就是在给出的图里面寻找一个长度为K的环。。。
想了一想,肯定是用DFS,然后就考虑实现,可是以什么作为参数呢,以下是我考虑不恰当的地方:
我考虑的DFS参数有3个,第一个是当前的位置,还有一个是余剩的步数(我想到最多只能够走K次),还有一个是此次搜索的起点。
剪枝:跳过度为1的点,因为度为1的点不可能处于环上
我自己也认识到,这样的搜索有很大的重复性,比方说我从一个节点A向下寻找,在K步之内没有找到,接下来我会去在A+1处调用DFS,假若A和A+1相邻,此时所做的很大一部分工作是重复的,因为从A向A+1这边搜索的时候,已经搜索过一部分了,现在再搜索也仅仅是比原来多走一步而已。我想把走过的步数记录下来,可是没有想到好的办法,结果TLE到比赛结束。
比赛完之后去看题解发现自己没法实现的东西轻易的就可以实现。。。不得不说有点遗憾?
这个DFS里面有三个参数,第一个是当前的节点,第二个是离源节点的步数,第三个是父节点(也就是从哪边过来的)
在DFS搜索里面用来表示是否访问过的VIS数组来表示这个是离调用点有多少步,访问到某一个点P时,假若P已经访问过了