t]=0; stk.push(getstate()); mp[cnt]=old; mp[cnt-1]=0; } cnt-=1; cnt-=1; if(cnt>=0 && cnt<9 && cnt%3<2) { old=mp[cnt]; mp[cnt+1]=nxt[0][mp[cnt]]; mp[cnt]=0; stk.push(getstate()); mp[cnt]=old; mp[cnt+1]=0; } cnt+=1; cnt-=3; if(cnt>=0 && cnt<9) { old=mp[cnt]; mp[cnt+3]=nxt[1][mp[cnt]]; mp[cnt]=0; stk.push(getstate()); mp[cnt]=old; mp[cnt+3]=0; } cnt+=3; cnt+=3; if(cnt>=0 && cnt<9) { old=mp[cnt]; mp[cnt-3]=nxt[1][mp[cnt]]; mp[cnt]=0; stk.push(getstate()); mp[cnt]=old; mp[cnt-3]=0; } cnt-=3; } int bfs() { int step1=0,step2=0,ans=INF,temp; for(step1=0;step1<=20;step1++) { while(top1
=0;i--) { if(i!=x*3+y) temp=temp*7+1; else temp*=7; } if(vis2[hashval(temp)]) { printf("0\n"); continue; } vis1[hashval(temp)]=1; que1[bottom1].step=0; que1[bottom1].state=temp; bottom1++; printf("%d\n",bfs()); } }
|