题目连接

http://acm.hdu.edu.cn/showproblem.php?pid=1973

Prime Path

Description

The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. 
— It is a matter of security to change such things every now and then, to keep the enemy in the dark.
— But look, I have chosen my number 1033 for good reasons. I am the Prime minister, you know!
—I know, so therefore your new number 8179 is also a prime. You will just have to paste four new digits over the four old ones on your office door.
— No, it’s not that simple. Suppose that I change the first digit to an 8, then the number will read 8033 which is not a prime!
— I see, being the prime minister you cannot stand having a non-prime number on your door even for a few seconds.
— Correct! So I must invent a scheme for going from 1033 to 8179 by a path of prime numbers where only one digit is changed from one prime to the next prime.

Now, the minister of finance, who had been eavesdropping, intervened.
— No unnecessary expenditure, please! I happen to know that the price of a digit is one pound.
— Hmm, in that case I need a computer program to minimize the cost. You don’t know some very cheap software gurus, do you?
—In fact, I do. You see, there is this programming contest going on. . .

Help the prime minister to find the cheapest prime path between any two given four-digit primes! The first digit must be nonzero, of course. Here is a solution in the case above.
1033
1733
3733
3739
3779
8779
8179
The cost of this solution is 6 pounds. Note that the digit 1 which got pasted over in step 2 can not be reused in the last step – a new 1 must be purchased.

Input

One line with a positive number: the number of test cases (at most 100). Then for each test case, one line with two numbers separated by a blank. Both numbers are four-digit primes (without leading zeros).

Output

One line for each case, either with a number stating the minimal cost or containing the word Impossible.

Sample Input

3
1033 8179
1373 8017
1033 1033

Sample Output

6
7
0

bfs。。。

  1. #include<algorithm>
  2. #include<iostream>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cstdio>
  6. #include<vector>
  7. #include<queue>
  8. #include<map>
  9. using std::cin;
  10. using std::cout;
  11. using std::endl;
  12. using std::find;
  13. using std::sort;
  14. using std::map;
  15. using std::pair;
  16. using std::queue;
  17. using std::vector;
  18. using std::reverse;
  19. #define pb(e) push_back(e)
  20. #define sz(c) (int)(c).size()
  21. #define mp(a, b) make_pair(a, b)
  22. #define all(c) (c).begin(), (c).end()
  23. #define iter(c) decltype((c).begin())
  24. #define cls(arr,val) memset(arr,val,sizeof(arr))
  25. #define cpresent(c, e) (find(all(c), (e)) != (c).end())
  26. #define rep(i, n) for (int i = 0; i < (int)(n); i++)
  27. #define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
  28. const int Max_N = ;
  29. typedef unsigned long long ull;
  30. int start, end;
  31. namespace work {
  32. struct Node {
  33. int v, s;
  34. Node(int i = , int j = ) :v(i), s(j) {}
  35. };
  36. bool vis[Max_N], Prime[Max_N];
  37. inline bool isPrime(int n) {
  38. for (int i = ; (ull)i * i <= n; i++) {
  39. if ( == n % i) return false;
  40. }
  41. return n != ;
  42. }
  43. inline void init() {
  44. for (int i = ; i < Max_N; i++) {
  45. Prime[i] = isPrime(i);
  46. }
  47. }
  48. inline void bfs() {
  49. char buf[], str[];
  50. cls(vis, false);
  51. queue<Node> que;
  52. que.push(Node(start, ));
  53. vis[start] = true;
  54. while (!que.empty()) {
  55. Node tmp = que.front(); que.pop();
  56. if (tmp.v == end) { printf("%d\n", tmp.s); return; }
  57. sprintf(buf, "%d", tmp.v);
  58. reverse(buf, buf + );
  59. for (int i = ; buf[i] != '\0'; i++) {
  60. rep(j, ) {
  61. strcpy(str, buf);
  62. str[i] = j + '';
  63. reverse(str, str + );
  64. int v = atoi(str);
  65. if (vis[v] || !Prime[v]) continue;
  66. que.push(Node(v, tmp.s + ));
  67. vis[v] = true;
  68. }
  69. }
  70. }
  71. puts("Impossible");
  72. }
  73. }
  74. int main() {
  75. #ifdef LOCAL
  76. freopen("in.txt", "r", stdin);
  77. freopen("out.txt", "w+", stdout);
  78. #endif
  79. int t;
  80. work::init();
  81. scanf("%d", &t);
  82. while (t--) {
  83. scanf("%d %d", &start, &end);
  84. work::bfs();
  85. }
  86. return ;
  87. }

hdu 1973 Prime Path的更多相关文章

  1. [HDU 1973]--Prime Path(BFS,素数表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Time Limit: 5000/1000 MS (Java/Others ...

  2. HDU - 1973 - Prime Path (BFS)

    Prime Path Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  3. hdu - 1195 Open the Lock (bfs) && hdu 1973 Prime Path (bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1195 这道题虽然只是从四个数到四个数,但是状态很多,开始一直不知道怎么下手,关键就是如何划分这些状态,确保每一个 ...

  4. 【BFS】hdu 1973 Prime Path

    题目描述: http://poj.org/problem?id=3414 中文大意: 使用两个锅,盛取定量水. 两个锅的容量和目标水量由用户输入. 允许的操作有:灌满锅.倒光锅内的水.一个锅中的水倒入 ...

  5. HDU 1976 prime path

    题意:给你2个数n m.从n变成m最少须要改变多少次. 当中: 1.n  m  都是4位数 2.每次仅仅能改变n的一个位数(个位.十位.百位.千位),且每次改变后后的新数为素数 思路:搜索的变形题,这 ...

  6. POJ 3126:Prime Path

    Prime Path Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit St ...

  7. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  8. Prime Path 分类: 搜索 POJ 2015-08-09 16:21 4人阅读 评论(0) 收藏

    Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14091 Accepted: 7959 Descripti ...

  9. POJ2126——Prime Path(BFS)

    Prime Path DescriptionThe ministers of the cabinet were quite upset by the message from the Chief of ...

随机推荐

  1. VS集成Qt环境搭建

    环境:VS2010 + Qt5.2 关于VS的下载.安装,这里就不再做过多阐述. 一.下载Qt5.2安装包(qt-windows-opensource)与Qt插件(Visual Studio Add- ...

  2. powerdesigner中怎么给一主键设为自增型auto increme

    在使用powerdesigner 设计数据库表时,通常要对主键进行设置,如果主键是int 类型,一般会设置成自增,那么怎么在 powerdesigner 中设置呢,以下是具体的方法: 在所要设为自增型 ...

  3. javascript各种兼容性问题,不断更新

    ie6-ie8 不支持textContent支持innerTextchrome  支持textContent  innerTextfireFox    仅支持textContent不支持innerTe ...

  4. dell 交换机 双链路冗余

    公司海外机房引入2G带宽,是由2个电口绑定实现的.因业务需要扩容到3G,在绑定端口扩展性不太好,因此直接上10G光纤模块. 机房技术人员建议,2g老线路不撤做备份,3g新线路在线使用.使用STP协议实 ...

  5. PowerDesigner之PDM检查

    一.PDM检查 1.检查项的设置 PDM错误级别分为Error和Warning两种.Error是致命错,一旦发现这类错误,系统会自动CDM生成PDM或者OOM,Warning是警告错误,是系统认为不合 ...

  6. Velocity原理

    1.准备 添加引用:velocity-1.7.jar,velocity-tools-2.0.jar,commons-beanutils-1.7.0.jar,commons-chain-1.1.jar, ...

  7. 006NFS与TFTP服务器

    1.交叉开发:嵌入式系统开发多采用交叉开发模式,其中产生嵌入式软件的平台称为宿主机,通常为PC电脑,运行嵌入式软件的平台称为目标机.宿主机一般通过网络,USB,JTAG等方式将软件下载到目标机. 2. ...

  8. 著名的二分查找的BUG

    int binarySearch(int a[], int key, int length) { int low = 0; int high = length - 1; while (low < ...

  9. 乐够GO应用源码完整版

    乐够GO应用源码完整版 V1.0,系统2.3以上使用,需要联网,每天定时更新数据,实现了对文章赞的功能,以及常用的评论功能,还有生活的职业的相关功能,如查找功能,分类的分类等功能,具体大家可以看看应用 ...

  10. C#使用结构来传递多个参数

    当参数超过5个时,建议用结构来传递多个参数. 示例代码如下: public struct MyStruct { public string str; public int number; } clas ...