首页 > 代码库 > POJ 3126 Prime Path
POJ 3126 Prime Path
很水的一个BFS,不过还是有坑点的,就是数都是大于1000的,我在千位时取过零,想了很久
不够细心啊!!!
AC代码如下:
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<queue> #include<map> using namespace std; struct H { int x,s; }; int sp[10005]; int vis[10005]; int dd[8]={1,10,100,1000}; int s,e; int sx,ex,sy,ey; int minn; int bfs(int x) { int i,j; queue<H>q; H a,b,c; a.x=x; a.s=0; q.push(a); while(!q.empty()) { b=q.front(); q.pop(); if(b.x==e) return b.s; for(i=0;i<4;i++) { for(j=0;j<=9;j++) { int a; if(i==0) { a=(b.x/10)*10; } if(i==1) { a=(b.x/100)*100+b.x%10; } if(i==2) { a=(b.x/1000)*1000+b.x%100; } if(i==3) { a=b.x%1000; } if(i==3&&j==0) continue; c.x=a+dd[i]*j; if(sp[c.x]==0&&!vis[c.x]) { vis[c.x]=1; c.s=b.s+1; q.push(c); } } } } } int main() { int t; int i,j; memset(sp,0,sizeof sp); sp[1]=1; for(i=2;i<10005;i++) for(j=i;j*i<10005;j++) sp[i*j]=1; cin>>t; while(t--) { scanf("%d%d",&s,&e); memset(vis,0,sizeof vis); vis[s]=1; int ans=bfs(s); printf("%d\n",ans); } return 0; }
POJ 3126 Prime Path
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。