题目连接

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。。。

 #include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<map>
using std::cin;
using std::cout;
using std::endl;
using std::find;
using std::sort;
using std::map;
using std::pair;
using std::queue;
using std::vector;
using std::reverse;
#define pb(e) push_back(e)
#define sz(c) (int)(c).size()
#define mp(a, b) make_pair(a, b)
#define all(c) (c).begin(), (c).end()
#define iter(c) decltype((c).begin())
#define cls(arr,val) memset(arr,val,sizeof(arr))
#define cpresent(c, e) (find(all(c), (e)) != (c).end())
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define tr(c, i) for (iter(c) i = (c).begin(); i != (c).end(); ++i)
const int Max_N = ;
typedef unsigned long long ull;
int start, end;
namespace work {
struct Node {
int v, s;
Node(int i = , int j = ) :v(i), s(j) {}
};
bool vis[Max_N], Prime[Max_N];
inline bool isPrime(int n) {
for (int i = ; (ull)i * i <= n; i++) {
if ( == n % i) return false;
}
return n != ;
}
inline void init() {
for (int i = ; i < Max_N; i++) {
Prime[i] = isPrime(i);
}
}
inline void bfs() {
char buf[], str[];
cls(vis, false);
queue<Node> que;
que.push(Node(start, ));
vis[start] = true;
while (!que.empty()) {
Node tmp = que.front(); que.pop();
if (tmp.v == end) { printf("%d\n", tmp.s); return; }
sprintf(buf, "%d", tmp.v);
reverse(buf, buf + );
for (int i = ; buf[i] != '\0'; i++) {
rep(j, ) {
strcpy(str, buf);
str[i] = j + '';
reverse(str, str + );
int v = atoi(str);
if (vis[v] || !Prime[v]) continue;
que.push(Node(v, tmp.s + ));
vis[v] = true;
}
}
}
puts("Impossible");
}
}
int main() {
#ifdef LOCAL
freopen("in.txt", "r", stdin);
freopen("out.txt", "w+", stdout);
#endif
int t;
work::init();
scanf("%d", &t);
while (t--) {
scanf("%d %d", &start, &end);
work::bfs();
}
return ;
}

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. PMP考试--成本管理中常用的概念

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 净现值(NPV)   Net Present Value 在项目计算期内,按行业基准 ...

  2. Add, remove, shuffle and sort

    To deal cards, we would like a method that removes a card from the deck and returns it. The list met ...

  3. 学习总结 初步了解HTML课程

    HTML     内容(超文本标记语言) CSS       网页美化 Javascript   脚本语言 <html>  --开始标签 <head> 网页上的控制信息 < ...

  4. 分层服务提供者(LSP)

    分层服务提供者(LSP)(1) 开发过滤数据包的LSP程序可以定义过滤规则,恩,先看看LSP本身是DLL,可以将它安装至Winsock目录,创建套接字的应用程序不必知道此LSP的任何信息就能调用它 1 ...

  5. Android常见包

    Android.jar常见包 android.app-----------提供高层的程序模型.提供基本的运行环境android.content-------包含各种的对设备上的数据进行访问和发布的类a ...

  6. tool debug Android phonegap app

    phonegap debug 最近发现了一个可以调试phonegap的工具  在Google浏览器上调试Android真机的APP  这是好啊!!!跟Mac上的Safari 浏览器一样调试iOS 的A ...

  7. setjmp 与 longjmp

    setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理. 先来看一下这两个函数的定义 ...

  8. SQL Server 之登录

    1:SQL Server 是Microsoft 公司推出的关系型数据库管理系统. 安装好后,开始登录. 2:几种登录方式: (1):服务器名称: ①: . :代表本地服务器 ②: local :代表本 ...

  9. Unieap3.5-JS常用方法

    引用js文件 获得当前主体 getDimensionId(); 当前单位类型(网点,分部,总部) getUnitType(); 数据库日期 newOracleDate(); unieap.byId(& ...

  10. Linux日志

    一.Linux 常見的日志文件 /var/log/cron:你的 crontab 排程有没有实际被进行? 进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录档内查询看看. ...