4 5 3
1 1 3 4
3 1
3 3
2 4
#include<bits/stdc++.h>
using namespace std;
int a[7][7],v[7][7];
int dx[4]={1,0,-1,0};
int dy[4]={0,-1,0,1};
struct point
{
int x;
int y;
int step;
};
int main()
{
int i,j,m,n,t,x,y,flag=0;
scanf("%d%d%d",&n,&m,&t);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
a[i][j]=1;
}
}
int sx,sy,fx,fy;
scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
for(i=0;i<t;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=2;
}
queue<point>r;
point start;
start.x=sx;start.y=sy;start.step=0;
r.push(start);
v[sx][sy]=1;
while(!r.empty())
{
int X=r.front().x;
int Y=r.front().y;
if(X==fx&&Y==fy)
{
printf("%d",r.front().step);
flag=1;
break;
}
for(int f=0;f<4;f++)
{
int tx=X+dx[f],ty=Y+dy[f];
if(a[tx][ty]==1&&v[tx][ty]==0)
{
point temp;
temp.x=tx;
temp.y=ty;
temp.step=r.front().step+1;
r.push(temp);
v[tx][ty]=1;
}
}
r.pop();
}
if(flag==0)
{
printf("no");
}
}
bfs
#include<bits/stdc++.h>
using namespace std;
int a[7][7],v[7][7],sum=0;
int dx[4]={1,0,-1,0};
int dy[4]={0,-1,0,1};
int sx,sy,fx,fy;
void dfs(int x,int y)
{
if(x==fx&&y==fy)
{
sum++;
return;
}
else
{
for(int f=0;f<4;f++)
{
if(a[x+dx[f]][y+dy[f]]==1&&v[x+dx[f]][y+dy[f]]==0)
{
v[x][y]=1;
dfs(x+dx[f],y+dy[f]);
v[x][y]=0;
}
}
return;
}
}
int main()
{
int n,m,t,i,j;
scanf("%d%d%d",&n,&m,&t);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
a[i][j]=1;
}
}
int x,y;
scanf("%d%d%d%d",&sx,&sy,&fx,&fy);
for(i=0;i<t;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=2;
}
dfs(sx,sy);
printf("%d",sum);
}