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、最后更新时间

 

posted @ 2018-01-27 16:49  MekakuCityActor  阅读(118)  评论(0编辑  收藏  举报