poj3126 搜索
2016-04-22 19:41
176 查看
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <queue> #define MAXN 10000 using namespace std; int first,last; int prime[MAXN]; void dabiao() { int i,j; for(i = 1000;i<MAXN;i++) { int flag = 0; for(j = 2;j<=pow(i,0.5);j++) { if(i%j==0) { flag = 1; break; } } if(!flag) prime[i] = 1; } } int bfs() { int t[4],dis[MAXN],vis[MAXN]; int i,j,v; queue<int> q; memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); q.push(first); vis[first] = 1; while(!q.empty()) { int x = q.front(); q.pop(); t[0] = x/1000; t[1] = x%1000/100; t[2] = x%100/10; t[3] = x%10; if(x == last) return dis[x]; for(i = 0;i<4;i++) { int temp = t[i]; for(j = 0;j<10;j++) { if(temp != j) { t[i] = j; v = t[0]*1000+t[1]*100+t[2]*10+t[3]; if(!vis[v]&&prime[v]) { vis[v] = 1; dis[v] = dis[x]+1; q.push(v); } if(v == last) return dis[v]; } t[i] = temp; } } } return -1; } int main() { //freopen("caicai.txt","r",stdin); int n; scanf("%d",&n); dabiao(); while(n--) { cin>>first>>last; int num = bfs(); if(num == -1) cout<<"Impossible\n"; else cout<<num<<endl; } return 0; }
相关文章推荐
- 2.3 使用intent对象传递数据
- Cocoa touch框架预览
- Adobe源码泄漏?3行代码搞定,Flash动画无缝导入Android/iOS/cocos2dx(二)
- 后缀数组复习小记
- 制作rhel的yum仓库
- 阶乘的精确值&大数阶乘
- 支持向量机(SVM)的SMO算法详解
- POJ 1426 搜索进阶
- C++小技巧之四舍五入与保留小数
- ps命令详解
- linux中ctrl+z,ctrl+d和ctrl+c的区别
- 《构建之法》第11,2,3,4章读后感
- PrintDirectoryFiles
- OpenCV249+Eigen+VS2010属性表配置
- 二.常见标签、选择符与伪类
- 有序插入
- 数据结构与算法的学习问题——The Data Structures and Algorithms Learning Problem
- AS基本使用总结之从svn导入eclipseADT项目
- Ubutu Mosquitto部署和相关的配置(支持websocket)
- 图片防盗链