zoj 2081 Mission Impossible——最近令我满纠结的一题--。

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1081

                                                              Mission Impossible

我做的第一道同时用DFS和BFS的题目。此题主要就是要先用BFS算出到T的最短的路径(将M忽略),然后就是用DFS来计算最短路径个数,同时将有M的最短路个标记和计数出来,相除取百分比即可。

 

终于AC了!!!


首先要感谢logiciel大大,正是由于logiciel大大检测出我的DFS的递归的步数超多,我才把注意力放在了优化函数的上面,进行了标记,递归步数一下减少到为logiciel大大提供的标准程序的递归步数的6%!

欣 喜若狂,然后本以为可以了但是交上去还是不行,然后由于有了logiciel大大的提醒再加上我们ACM队的杨杨学长的指导,我想到了只有BFS上会有问 题,果真通过计数发现我的BFS的队列数竟然达到了3千多万,而logiciel大大给的标程BFS的队列数才62,原来罪魁祸首在这里,是我的BFS的 每次入队时没标记,导致重复走了,最终多入了如此多的点,真是不应该呀。。。怪不得会Memory Limit Exceeded。。。标记了以后一切OK!

以下是我修改后正确的程序和logiciel大大给的标程的运行结果对比:(bfs_count 统计bfs的入队点数的 dfs_count统计递归次数的)
logiciel大大给的标程的运行结果:

我的程序运行结果:

 

在此再次十分感谢logiciel大大的指导和所有帮助过我的人,谢谢!!!

 

最后献上我的代码,愿与大家交流:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值