#include<bits/stdc++.h>
using namespace std;
int i,j,k,m,n,a[6][6],sx,sy,fx,fy,o,p,t,ans;//按照题目定义即可
void go(int i,int j)
{
if (i==fx&&j==fy){
ans++; //到达终点计数器加一,
return;} //1.判断环节:(1是否到终点!
if (a[i+1][j]==1)//(2判断是不是障碍(4步判断的障碍,和我想的一样)
{
a[i+1][j]=0;//如果是障碍都设为0
go(i+1,j);//向下方节点寻找可以走的下一步
a[i+1][j]=1;//(3回溯
}
if (a[i-1][j]==1)//判断是不是障碍
{
a[i-1][j]=0;
go(i-1,j);//向下方节点寻找可以走的下一步
a[i-1][j]=1;
}
if (a[i][j-1]==1)//判断是不是障碍
{
a[i][j-1]=0;
go(i,j-1);//向下方节点寻找可以走的下一步
a[i][j-1]=1;
}
if (a[i][j+1]==1)//判断是不是障碍
{
a[i][j+1]=0;
go(i,j+1);//向下方节点寻找可以走的下一步
a[i][j+1]=1;
}
}
int main()
{
cin>>m>>n>>t;//读入
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
a[i][j]=1;//把整个迷宫设为1
cin>>sx>>sy>>fx>>fy;//读入起点终点
a[sx][sy]=0;//把起点设为0
for (i=1;i<=t;i++)
{
cin>>o>>p;//读入障碍
a[o][p]=0;//在迷宫上把障碍设为0
}
go(sx,sy);//开始深搜
cout<<ans;//输出答案
return 0;
}
/*
对于main思路的总结:
之前我做这道题的时候大体差不多,不过我是定义的bool类型,此题是每当走一步就把走的设为0(以及障碍)
对于go这个函数来说,状态设为起点的x,y坐标,把问题简单化。
*/