POJ3669解题报告(bfs)
POJ3669http://poj.org/problem?id=3669
很明显是一道bfs的题目
由于陨石的降临具有时刻性,所以地图是随时间变化的,
所以可以使用结构体来存储陨石下落的时刻以及位置以便更新地图,然后预处理出安全位置(把会被轰炸的区域设置为2,把不会被轰炸的区域设置为1),
(由于陨石的轰炸不具有蔓延性(如果是火灾的蔓延则具有蔓延性),所以可以直接利用for循环更新地图,而人的移动具有蔓延性(即多方向延伸),所以需要用队列靠bfs更新)
接下来就是bfs操作,
1、先把起点放进队列que,
2、然后在bfs中用一个while(!que.empty)来维持搜索,
3、然后先通过时间判断是否开始轰炸更新地图(把轰炸区域设置为0),
4、在引入时间轴之后,为了在时间更新之前,把每一步的操作全部遍历,引入que.size()
5、再通过que.front();que.pop()读取并更新队列元素,并把合法的点(非“0”点)加入到队列,
6、此时别忘了把放入队列的点也设置为0,从而避免走回头路,
7、最后更新时间