```cpp
#include<bits/stdc++.h>
using namespace std;
int dx[10]={0,0,0,1,-1};
int dy[10]={0,1,-1,0,0};
int n,m,t,fx,fy,sx,sy,q,u;
int ans=0;
int ma[20][20];
void DFS(int x,int y)
{
if(x==fx&&y==fy)
{
ans=ans+1;
return;
}
int a,b;
for(int i=1;i<=4;++i)
{
a=x;b=y;
a=a+dx[i];
b=b+dy[i];
if(a>0&&a<=n&&b>0&&b<=m&&ma[a][b]!=1)
{
ma[a][b]=1;
DFS(a,b);
ma[a][b]=0;
}
}
return;
}
int main()
{
scanf("%d %d",&n,&m);
scanf("%d",&t);
scanf("%d %d",&sx,&sy);
scanf("%d %d",&fx,&fy);
ma[sx][sy]=1;
for(int i=1;i<=t;++i)
{
scanf("%d %d",&q,&u);
ma[q][u]=1;
}
DFS(sx,sy);
printf("%d",ans);
return 0;
}
by Max__HE @ 2019-04-25 13:19:08
#include <bits/stdc++.h>
using namespace std;
int n,m,t,a[7][7],vis[7][7];
int sx,sy,fx,fy,ans=0;
inline void init_() {
freopen("a.txt","r",stdin);
}
inline int read_() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void clean_() {
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
}
inline void readda_() {
clean_();
n=read_();m=read_();t=read_();
sx=read_();sy=read_();fx=read_();fy=read_();
for(int i=1;i<=t;i++) {
int x=read_(),y=read_();
a[x][y]=1;
}
}
inline void dfs_(int x,int y) {
if(x<1||y<1||x>n||y>m) return;
if(a[x][y]) return;
if(x==fx&&y==fy) {
ans++;
return;
}
if(!vis[x+1][y]) {
vis[x+1][y]=1;
dfs_(x+1,y);
vis[x+1][y]=0;
}
if(!vis[x-1][y]) {
vis[x-1][y]=1;
dfs_(x-1,y);
vis[x-1][y]=0;
}
if(!vis[x][y-1]) {
vis[x][y-1]=1;
dfs_(x,y-1);
vis[x][y-1]=0;
}
if(!vis[x][y+1]) {
vis[x][y+1]=1;
dfs_(x,y+1);
vis[x][y+1]=0;
}
return;
}
inline void work_() {
vis[sx][sy]=1;
dfs_(sx,sy);
printf("%d",ans);
}
int main() {
init_();
readda_();
work_();
return 0;
}
by 小元勋 @ 2019-04-30 15:25:55
```
#include <bits/stdc++.h>
using namespace std;
int n,m,t,a[7][7],vis[7][7];
int sx,sy,fx,fy,ans=0;
inline void init_() {
freopen("a.txt","r",stdin);
}
inline int read_() {
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
inline void clean_() {
memset(a,0,sizeof(a));
memset(vis,0,sizeof(vis));
}
inline void readda_() {
clean_();
n=read_();m=read_();t=read_();
sx=read_();sy=read_();fx=read_();fy=read_();
for(int i=1;i<=t;i++) {
int x=read_(),y=read_();
a[x][y]=1;
}
}
inline void dfs_(int x,int y) {
if(x<1||y<1||x>n||y>m) return;
if(a[x][y]) return;
if(x==fx&&y==fy) {
ans++;
return;
}
if(!vis[x+1][y]) {
vis[x+1][y]=1;
dfs_(x+1,y);
vis[x+1][y]=0;
}
if(!vis[x-1][y]) {
vis[x-1][y]=1;
dfs_(x-1,y);
vis[x-1][y]=0;
}
if(!vis[x][y-1]) {
vis[x][y-1]=1;
dfs_(x,y-1);
vis[x][y-1]=0;
}
if(!vis[x][y+1]) {
vis[x][y+1]=1;
dfs_(x,y+1);
vis[x][y+1]=0;
}
return;
}
inline void work_() {
vis[sx][sy]=1;
dfs_(sx,sy);
printf("%d",ans);
}
int main() {
init_();
readda_();
work_();
return 0;
}
```
by 小元勋 @ 2019-04-30 15:26:23