=dx[i];
y.c+=dy[i];
if(y.r<0 || y.r>=6 || y.c<0 || y.c>y.r) continue;
swap(y.p[x.r][x.c],y.p[y.r][y.c]);
if(M[y.flag].count(cal(y))==0) M[y.flag][cal(y)]=y.dept;
Q.push(y);
}
}
return -1;
}
int main()
{
int T; cin>>T;
Node s,e;
while(T--)
{
for(int i=0;i<6;i++)
{
for(int j=0;j<=i;j++)
{
scanf("%lld",&s.p[i][j]);
if(s.p[i][j]==0) s.r=i, s.c=j;
e.p[i][j]=i;
}
}
s.flag=0; s.dept=0;
e.r=0; e.c=0;
e.flag=1; e.dept=0;
int ans=bfs(s,e);
if(ans>=0&&ans<=20) printf("%d\n",ans);
else puts("too difficult");
}
return 0;
}
/**
1
2 1
2 0 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
0
1 1
2 2 2
3 3 3 3
4 4 4 4 4
5 5 5 5 5 5
*/
|