这道题简直丧心病狂,对人的理解力要求我觉得很高,反正我是被坑了好几次才打出了样例,这是今天考的题,通过这个题我深切感受到自己经验的不足以及做题经验缺乏带来的严重后果
最重要的就是把简单的变难了;
就这道题来说吧,有这么几点:
逆向dfs在求解终点不能到大的道路的时候,要注意判断是否来过这个点,否则遇到了环就爆栈了
再判断不能走的点的时候最好新建一个数组,不能乱改,否则就会出很大差错,并且不能走的点就不要再新建一些奇怪的判断语句加到spfa里了,如果点不能走的话,直接把spfa开始的judge赋成true就行了,这样这个点就不会入队,即使别的点可以更新到这个点的距离,这个点也不会再往前走
还有一点就是最坑的,如果起点本来就是不能走的,就直接把起点的判断数组赋成true就行了,为此我折腾了半天,用了各种数组,发现最后还是一个spfa的原数组就都解决了,本来题是简洁的,思路是清楚的,代码是简单易懂的。不要自己给自己添麻烦,要多想想能不能再简单点,班主任这么对我说过,写的代码一定要越短,越简洁越好,越是长的代码就越容易出bug,越不容易调试,切记