poj 3126 Prime Path(搜索专题)
2017-04-20 20:26
495 查看
Prime Path
Description
View Code
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 20237 | Accepted: 11282 |
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cmath> 6 7 using namespace std; 8 9 bool prime[10000]; 10 int que[5000]; 11 int step[5000]; 12 int isprime[5000]; 13 bool vis[10000]; 14 int cou=0; 15 16 void getprime(){ 17 int num=10000; 18 num=sqrt(num*1.0); 19 memset(prime,true,sizeof(prime)); 20 prime[0]=prime[1]=false; 21 for(int i=4;i<10000;i+=2){ 22 prime[i]=false; 23 } 24 for(int i=3;i<num;i+=2){ 25 if(prime[i]){ 26 for(int j=i*i;j<10000;j+=2*i){ 27 prime[j]=false; 28 } 29 } 30 } 31 for(int i=1000;i<10000;i++){ 32 if(prime[i]){ 33 isprime[cou++]=i; 34 } 35 } 36 } 37 38 bool judge(int a,int b){ 39 int sum=0; 40 int t1[4],t2[4]; 41 for(int i=0;i<4;i++){ 42 t1[i]=a%10; 43 a/=10; 44 t2[i]=b%10; 45 b/=10; 46 } 47 for(int i=0;i<4;i++){ 48 if(t1[i]==t2[i]){ 49 sum++; 50 } 51 } 52 if(sum==3){ 53 return true; 54 }else{ 55 return false; 56 } 57 } 58 59 int bfs(int a,int b){ 60 int start=0; 61 int endd=0; 62 memset(vis,true,sizeof(vis)); 63 que[endd]=a; 64 step[endd++]=0; 65 while(start<endd){ 66 int now=que[start]; 67 int nowStep=step[start++]; 68 if(now==b){ 69 return nowStep; 70 } 71 for(int j=0;j<=cou;j++){ 72 int i=isprime[j]; 73 if(!vis[i]){ 74 continue; 75 } 76 if(prime[i]&&judge(i,now)){ 77 if(i==b){ 78 return nowStep+1; 79 } 80 que[endd]=i; 81 step[endd++]=nowStep+1; 82 vis[i]=false; 83 } 84 } 85 } 86 return 0; 87 } 88 89 int main() 90 { 91 int n; 92 scanf("%d",&n); 93 int a,b; 94 getprime(); 95 for(int i=0;i<n;i++){ 96 scanf("%d %d",&a,&b); 97 int ans=bfs(a,b); 98 printf("%d\n",ans); 99 } 100 return 0; 101 }
View Code
相关文章推荐
- [kuangbin带你飞]专题一 简单搜索F - Prime Path(POJ 3126)
- POJ 3126 Prime Path(kuangbin带你飞 专题一:简单搜索)
- poj 3126 Prime Path([kuangbin带你飞]专题一 简单搜索)
- POJ - 3126 Prime Path(15.10.10 搜索专题)bfs
- POJ 3126-Prime Path 简单搜索 BFS
- POJ 3126 Prime Path BFS搜索
- POJ 3126 Prime Path(筛法,双向搜索)
- Prime Path - POJ 3126 BFS宽度(广度)优先搜索
- poj 3126 Prime Path(bfs搜索)
- POJ 3126 Prime Path(搜索)
- poj 3126 Prime Path(简单的DFS搜索)
- POJ 3126 Prime Path(基础搜索)
- POJ 3126-Prime Path-广度优先搜索bfs
- POJ 3126-Prime Path【搜索】
- POJ 3126 Prime Path (bfs、埃氏筛法)
- POJ 3126 Prime Path(BFS 数字处理)
- POJ 3126 Prime Path SPFA
- POJ-3126-Prime Path(BFS)
- poj 3126 Prime path
- POJ 3126 Prime Path(素数打表+BFS)