为什么错了,求大佬解释

P1588 [USACO07OPEN] Catch That Cow S

@[intmain](/space/show?uid=64018) 你是就这一个点错还是全错? 还有你开了完全隐私保护我看不到luogu的反馈
by ztz11 @ 2018-07-04 08:54:48


AC 代码; ```cpp #include <iostream> #include <cstdio> #include <cstring> #define rii register int i using namespace std; int bj[200005],dl[200005],length,sd[200005],x,y,t; int bfs() { memset(bj,0,sizeof(bj)); memset(dl,0,sizeof(dl)); memset(sd,0,sizeof(sd)); sd[1]=0; length=1; dl[1]=x; bj[x]=1; for(rii=1;i<=length;i++) { if(dl[i]==y) { return sd[i]; } if(bj[2*dl[i]]!=1&&dl[i]*2<2*y) { length++; sd[length]=sd[i]+1; dl[length]=2*dl[i]; bj[2*sd[i]]=1; } if(bj[dl[i]+1]!=1&&dl[i]+1<2*y) { length++; sd[length]=sd[i]+1; dl[length]=dl[i]+1; bj[dl[i]+1]=1; } if(bj[dl[i]-1]!=1&&dl[i]-1>=0) { length++; sd[length]=sd[i]+1; dl[length]=dl[i]-1; bj[dl[i]-1]=1; } } } int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&x,&y); int cnt=0; while(y%2==0) { y/=2; cnt++; if(y<=x) { y*=2; cnt--; break; } } int ans=bfs(); printf("%d\n",ans+cnt); } } ```
by ztz11 @ 2018-07-04 08:55:40


|