摘要: 题目大意:给定一个4位素数,一个目标4位素数。每次变换一位,保证变换后依然是素数,求变换到目标素数的最小步数。 解题报告:直接用最短路。 枚举1000-10000所有素数,如果素数A交换一位可以得到素数B,则在AB间加入一条长度为1的双向边。 则题中所求的便是从起点到终点的最短路。使用Dijkstra或SPFA皆可。 当然,纯粹的BFS也是可以的。 用Dijkstra算法A了题目之后,看了一下Discuss,发现了一个新名词,双向BFS。 即从起点和终点同时进行BFS,相遇则求得最短路。 借鉴了思想,自己动手实现了代码。原本以为双向比单向快一倍而已,其实远远不止。 笔者用3... 阅读全文
posted @ 2013-08-03 00:56 SF-_- 阅读(451) 评论(0) 推荐(0) 编辑