#include<stdio.h>
#include<string.h>
#define n 5
#define m 5
struct Node
{
int x;
int y;
}a[n*m+1];
int visit[n+1][m+1];
int jiexian(int xx,int yy)
{
if(xx<0||xx>n-1)
return 0;
else if(yy<0||yy>m-1)
return 0;
else
return 1;
}
int bfs(int x1,int y1,int x2,int y2)
{
int xx;
int yy;
memset(visit,0,sizeof(visit));
int rear=0;
int front = 0;
int map[n][m];
printf("请输入地图\n");
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
scanf("%d",&map[i][j]);
a[rear].x=x1;
a[rear++].y=y1;
int x_add[4]={0,0,1,-1};
int y_add[4]={1,-1,0,0};
while(rear>front)
{
if(a[front].x==x2&&a[front].y==y2)
return 1;
int x=a[front].x;
int y=a[front++].y;
for(int i=0;i<4;i++)
{
xx=x+x_add[i];
yy=y+y_add[i];
if(map[xx][yy]==1&&visit[xx][yy]==0&&jiexian(xx,yy))
{
visit[xx][yy]=1;
a[rear].x=xx;
a[rear++].y=yy;
}
}
}
return 0;
}
int main()
{
int x2,y2;
int x1,y1;
printf("请输入入口\n");
scanf("%d%d",&x1,&y1);
printf("请输入出口\n");
scanf("%d%d",&x2,&y2);
int ans=bfs(x1,y1,x2,y2);
if(ans)
printf("OK");
else
printf("NO");
return 0;
}