poj 3126Prime Path
来源:互联网 发布:平板软件市场hd 编辑:程序博客网 时间:2024/05/01 11:56
题意很简单:两个四位数的素数通过改变某一位,得到另一个素数,这样一直操作下去,求当m变成n时最少的操作次数?分析可知道,求最短的操作步数肯定要用BFS,因为要求素数所以要筛选素数求出素数。这题很简单一次就过而且时间仅有0MS哦!
代码:
#include<iostream>#include<queue>using namespace std;queue<int>q;int ans[10000];bool visit[10000],prime[10000];int bfs(int m,int n){ memset(ans,0,sizeof(ans)); int p; while(!q.empty()) q.pop(); q.push(m); visit[m]=1; if(visit[n]) return ans[n]; while(!q.empty()) { p=q.front(); q.pop(); for(int i=0;i<=9;i++) { if(prime[p/10*10+i]&&!visit[p/10*10+i]) { q.push(p/10*10+i); ans[p/10*10+i]=ans[p]+1; visit[p/10*10+i]=1; } if(prime[p/100*100+p%10+i*10]&&!visit[p/100*100+p%10+i*10]) { q.push(p/100*100+p%10+i*10); ans[p/100*100+p%10+i*10]=ans[p]+1; visit[p/100*100+p%10+i*10]=1; } if(prime[p/1000*1000+p%100+i*100]&&!visit[p/1000*1000+p%100+i*100]) { q.push(p/1000*1000+p%100+i*100); ans[p/1000*1000+p%100+i*100]=ans[p]+1; visit[p/1000*1000+p%100+i*100]=1; } if(i!=0&&prime[p%1000+i*1000]&&!visit[p%1000+i*1000]) { q.push(p%1000+i*1000); ans[p%1000+i*1000]=ans[p]+1; visit[p%1000+i*1000]=1; } } if(visit[n]) return ans[n]; } return -1;} int main(){ int i,j,m,n,t,k; prime[1]=false; memset(prime,true,sizeof(prime)); for(i=2;i<=9999/2;i++) { if(prime[i]) { for(j=i<<1;j<=9999;j+=i) { prime[j]=false; } } } cin>>t; while(t--) { cin>>m>>n; memset(visit,false,sizeof(visit)); k=bfs(m,n); if(k==-1) cout<<"Impossible"<<endl; else cout<<k<<endl; } return 0;}
- POJ 3126 Prime Path
- POJ 3126 Prime Path
- poj 3126Prime Path
- POJ -3126-Prime Path
- POJ 3126 Prime Path
- poj 3126 Prime Path
- POJ 3126 - Prime Path
- POJ 3126 Prime Path
- poj 3126 prime path
- POJ 3126 Prime Path
- Prime Path poj 3126
- POJ 3126 Prime Path
- poj 3126 Prime Path
- POJ 3126 Prime Path
- poj 3126 Prime path
- poj - 3126 - Prime Path
- POJ 3126 Prime Path
- POJ 3126 Prime Path
- ubuntu12.04虚拟机硬盘扩容
- 关于网站防SQL注入使用关键字过滤和SQL注入
- 根据浏览器的版本为网页应用不同的 CSS 样式表文件
- Raising Modulo Numbers 解题报告
- c#使用post,get请求网页
- poj 3126Prime Path
- 电商创新模式-食品类-LoveWithFood:每月送来一份惊喜的另类电商
- GridSplitter的使用
- Qt实现窗口自动隐藏
- Winfrom c# 两个ComboBox互相联动
- struts2 访问静态常量,静态方法
- linux下vim命令详解
- iBatis配置详解
- Canvas API