标签:
Input
Output
Sample Input
Sample Output
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<sstream>
#include<algorithm>
#include<utility>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<iterator>
#include<stack>
using namespace std;
const int INF=1e9+7;
const double eps=1e-7;
const int mod=1000007;
const int maxn=100005;
int f[2],r[2]; //双向bfs的两个队列的队首队尾指针
int dx[]={-1,0,1,0},dy[]={0,-1,0,1}; //方向数组
bool in(int x,int y){ return x>=0&&x<5&&y>=0&&y<5; } //是否越界
struct node
{
int px[2],py[2]; //保存2个空格的位置和整个数组
int A[5][5];
}nod[2][maxn]; //0是前面搜,1是后面搜
int B[5][5]={ //最终状态
-1,-1,0,-1,-1,
-1,1,2,3,-1,
4,5,6,7,8,
-1,9,10,11,-1,
-1,-1,0,-1,-1
};
bool Same(int A[][5]) //判断该状态是否与最终的状态相等
{
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(A[i][j]!=B[i][j]) return false;
return true;
}
int F[20]; //保存2^i
void GetF()
{
F[0]=1