最短路径,BFS搜索就OK,主要是怎么输出,一时半会还没想到,因为总是想着怎么记录每一步的下一步,这是一个思维误区。
其实可以反过来考虑,从终点出发一直找前驱结点,然后反向输出,当然了,这样用个栈就可以了。
坑点1
输出每个点的时候,逗号和第二个数字之间要加个空格,比如,应该输出(0, 1)
而不是(0,1)
,于是我第一遍提交的时候说我presentation error
,然后我加个空格,反而还WA
了,奇怪。
我第一次的代码是这样写的:
cout<<'('<<p.first<<','<< p.second << ')'<<endl;
然后我加了个空格:
cout<<'('<<p.first<<', '<< p.second << ')'<<endl;
!!!!!!
后来发现,是', '
出了问题,C++里面", "
≠', '
,前面是字符串,后面是个啥?在C/C++里面,''
是字符的写法,然而我在一个字符里面写了两个字符。当然就会报错了。
所以,正确的是:
cout<<'('<<p.first<<", "<< p.second << ')'<<endl;
坑点2
其中这道题只有一个test case,直接把结果输出一遍就完事儿了。。。