Language: C++

#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
struct oza{
	int x;
	int y;
};
int A[50][50][50][50];
int main(){
	oza k;
	oza t;
	queue<oza> ka;
	queue<oza> ta;
	queue<int> Z;
	int  w,h,b;
	int d=0,c=0,i=0,j=0,l=-1,D[52][52];
	int tx[4]={ 1, 0,-1,0 };       
	int kx[4]={-1, 0, 1,0 };
	int ty[4]={ 0, 1, 0,-1 };
	int ky[4]={ 0, -1, 0,1};
	scanf("%d %d",&w,&h);
	while(w!=0&&h!=0){
	memset(A,0,sizeof(A));
		for(i=0;i<=h+1;i++){
		for(j=0;j<=w+1;j++){
		D[i][j]=1; //??¨????????????????????\?????? 
		}
	}

	scanf("%d %d",&t.x,&t.y);
	scanf("%d %d",&k.x,&k.y);
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
		scanf("%d",&D[i][j]);
		}
	}
	ta.push(t);
	ka.push(k);
	Z.push(c);
		if(t.x==k.x&&t.y==k.y){
			d=-1;
		}
	while(d!=-1){
		l++;
		if(l==4){
		l=0;
		t=ta.front();
		k=ka.front();
		ka.pop();
		ta.pop();
		Z.pop();
		A[t.x][t.y][k.x][k.y]=1;
		}
		if(Z.back()==100||Z.empty()){
			printf("NA");
		break;
		}
		t=ta.front();
		k=ka.front();
		c=Z.front();
		
		t.x=t.x+tx[l];
		t.y=t.y+ty[l];
		k.x=k.x+kx[l];
		k.y=k.y+ky[l];
		
		if(D[t.x][t.y]==1){
		t.x=t.x-tx[l];
		t.y=t.y-ty[l];
		}
		if(D[k.x][k.y]==1){
		k.x=k.x-kx[l];
		k.y=k.y-ky[l];
		}
		if(A[t.x][t.y][k.x][k.y]==1){
		


































#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
struct PP{
	int kx;
	int ky;
	int tx;
	int ty;
	int Z;
};
int A[50][50][50][50];
int main(){
	PP S;
	queue<PP> P;
	int  w,h;
	int d=0,i=0,j=0,l=-1,D[52][52];
	int tx[4]={ 1, 0,-1,0 };       
	int kx[4]={-1, 0, 1,0 };
	int ty[4]={ 0, 1, 0,-1 };
	int ky[4]={ 0, -1, 0,1};
	scanf("%d %d",&w,&h);
	while(w!=0&&h!=0){
	memset(A,0,sizeof(A));
		for(i=0;i<=h+1;i++){
		for(j=0;j<=w+1;j++){
		D[i][j]=1;
		}
	}

	scanf("%d %d",&S.tx,&S.ty);
	scanf("%d %d",&S.kx,&S.ky);
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
		scanf("%d",&D[i][j]);
		}
	}
	S.Z=0;
	P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			d=-1;
			printf("%d\n",S.Z);
		}
	while(d!=-1){
		l++;
		if(l==4){
		l=0;
		S=P.front();
		P.pop();
		if(P.empty()){
			printf("NA\n");
		break;
		}
		}
		S=P.front();
		
		S.tx=S.tx+tx[l];
		S.ty=S.ty+ty[l];
		S.kx=S.kx+kx[l];
		S.ky=S.ky+ky[l];
		if(A[S.tx][S.ty][S.kx][S.ky]==1){
			continue;
		}
		A[S.tx][S.ty][S.kx][S.ky]=1;

		if(D[S.tx][S.ty]==1){
		S.tx=S.tx-tx[l];
		S.ty=S.ty-ty[l];
		}
		if(D[S.kx][S.ky]==1){
		S.kx=S.kx-kx[l];
		S.ky=S.ky-ky[l];
		}
		S.Z++;
		P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			printf("%d\n",S.Z);
			break;
		}	
		if(S.Z==100){
			printf("NA\n");
		break;
		}
	
		
	}
	while(!P.empty()){
	P.pop();
	}
	l=-1;
	scanf("%d %d",&w,&h);
	}	
	return 0;

}



#include<stdio.h>
#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
struct PP{
	int kx;
	int ky;
	int tx;
	int ty;
	int Z;
};
int A[52][52][52][52];
int main(){
	PP S;
	queue<PP> P;
	int  w,h;
	int d=0,i=0,j=0,l=-1,D[52][52];
	int tx[4]={ 1, 0,-1,0 };       
	int kx[4]={-1, 0, 1,0 };
	int ty[4]={ 0, 1, 0,-1 };
	int ky[4]={ 0, -1, 0,1};
	scanf("%d %d",&w,&h);
	while(w!=0||h!=0){
	memset(A,0,sizeof(A));
		for(i=0;i<=h+1;i++){
		for(j=0;j<=w+1;j++){
		D[i][j]=1;
		}
	}

	scanf("%d %d",&S.tx,&S.ty);
	scanf("%d %d",&S.kx,&S.ky);
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
		scanf("%d",&D[i][j]);
		}
	}
	S.Z=0;
	P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			d=-1;
			printf("%d\n",S.Z);
		}
	while(d!=-1){
		l++;
		if(l==4){
		l=0;
		S=P.front();
		P.pop();
		if(P.empty()){
			printf("NA\n");
		break;
		}
		}
		S=P.front();
		
		S.tx=S.tx+tx[l];
		S.ty=S.ty+ty[l];
		S.kx=S.kx+kx[l];
		S.ky=S.ky+ky[l];
		if(A[S.tx][S.ty][S.kx][S.ky]==1){
			continue;
		}
		A[S.tx][S.ty][S.kx][S.ky]=1;

		if(D[S.tx][S.ty]==1){
		S.tx=S.tx-tx[l];
		S.ty=S.ty-ty[l];
		}
		if(D[S.kx][S.ky]==1){
		S.kx=S.kx-kx[l];
		S.ky=S.ky-ky[l];
		}
		S.Z++;
		P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			printf("%d\n",S.Z);
			break;
		}	
		if(S.Z==100){
			printf("NA\n");
		break;
		}
	
		
	}
	while(!P.empty()){
	P.pop();
	}
	l=-1;
	scanf("%d %d",&w,&h);
	}	
	return 0;

}











#include<stdio.h>

#include<queue>
#include<iostream>
#include<string.h>
using namespace std;
struct PP{
	int kx;
	int ky;
	int tx;
	int ty;
	int Z;
};
int A[54][54][54][54];
int main(){
	PP S;
	queue<PP> P;
	int  w,h;
	int d=0,i=0,j=0,l=-1,D[55][55];
	int tx[4]={ 1, 0,-1,0 };       
	int kx[4]={-1, 0, 1,0 };
	int ty[4]={ 0, 1, 0,-1 };
	int ky[4]={ 0, -1, 0,1};
	scanf("%d %d",&w,&h);
	while(w!=0||h!=0){
	memset(A,0,sizeof(A));
		for(i=0;i<=h+1;i++){
		for(j=0;j<=w+1;j++){
		D[i][j]=1;
		}
	}

	scanf("%d %d",&S.tx,&S.ty);
	scanf("%d %d",&S.kx,&S.ky);
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
		scanf("%d",&D[i][j]);
		}
	}
	S.Z=0;
	P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			d=-1;
			printf("%d\n",S.Z);
		}
	while(d!=-1){
		l++;
		if(l==4){
		l=0;
		S=P.front();
		P.pop();
		if(P.empty()){
			printf("NA\n");
		break;
		}
		}
		S=P.front();
		
		S.tx=S.tx+tx[l];
		S.ty=S.ty+ty[l];
		S.kx=S.kx+kx[l];
		S.ky=S.ky+ky[l];
		if(A[S.tx][S.ty][S.kx][S.ky]==1){
			continue;
		}
		A[S.tx][S.ty][S.kx][S.ky]=1;

		if(D[S.ty][S.tx]==1){
		S.tx=S.tx-tx[l];
		S.ty=S.ty-ty[l];
		}
		if(D[S.ky][S.kx]==1){
		S.kx=S.kx-kx[l];
		S.ky=S.ky-ky[l];
		}
		S.Z++;
		P.push(S);
		if(S.tx==S.kx&&S.ty==S.ky){
			printf("%d\n",S.Z);
			break;
		}	
		if(S.Z==100){
			printf("NA\n");
		break;
		}
	}
	while(!P.empty()){
	P.pop();
	}
	l=-1;
	scanf("%d %d",&w,&h);
	}	
	return 0;
}











































































44444444444444444444444444444444444444444444444444444444444444	continue;
		}
		
		ta.push(t);
		ka.push(k);
		c=c+1;
		Z.push(c);
		
		if(t.x==k.x&&t.y==k.y){
			printf("%d\n",Z.back());
			break;
		}	
		
		
	}
	while(!ka.empty()){
	ka.pop();
	ta.pop();
	Z.pop();
	}
	c=0;
	l=-1;
	scanf("%d %d",&w,&h);
	}	
	return 0;

}

Compiler output:
a.cc:488:1: warning: integer constant is too large for its type
  488 | 44444444444444444444444444444444444444444444444444444444444444  continue;
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc: In function 'int main()':
a.cc:126:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
  126 | int main(){
      |         ^~
a.cc:126:9: note: remove parentheses to default-initialize a variable
  126 | int main(){
      |         ^~
      |         --
a.cc:126:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:126:11: error: a function-definition is not allowed here before '{' token
  126 | int main(){
      |           ^
a.cc:217:8: error: redefinition of 'struct main()::PP'
  217 | struct PP{
      |        ^~
a.cc:118:8: note: previous definition of 'struct main()::PP'
  118 | struct PP{
      |        ^~
a.cc:224:5: error: conflicting declaration 'int A [52][52][52][52]'
  224 | int A[52][52][52][52];
      |     ^
a.cc:125:5: note: previous declaration as 'int A [50][50][50][50]'
  125 | int A[50][50][50][50];
      |     ^
a.cc:225:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
  225 | int main(){
      |         ^~
a.cc:225:9: note: remove parentheses to default-initialize a variable
  225 | int main(){
      |         ^~
      |         --
a.cc:225:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:225:11: error: a function-definition is not allowed here before '{' token
  225 | int main(){
      |           ^
a.cc:325:8: error: redefinition of 'struct main()::PP'
  325 | struct PP{
      |        ^~
a.cc:118:8: note: previous definition of 'struct main()::PP'
  118 | struct PP{
      |        ^~
a.cc:332:5: error: conflicting declaration 'int A [54][54][54][54]'
  332 | int A[54][54][54][54];
      |     ^
a.cc:125:5: note: previous declaration as 'int A [50][50][50][50]'
  125 | int A[50][50][50][50];
      |     ^
a.cc:333:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
  333 | int main(){
      |         ^~
a.cc:333:9: note: remove parentheses to default-initialize a variable
  333 | int main(){
      |         ^~
      |         --
a.cc:333:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:333:11: error: a function-definition is not allowed here before '{' token
  333 | int main(){
      |           ^
a.cc:488:64: error: expected ';' before 'continue'
  488 | 44444444444444444444444444444444444444444444444444444444444444  continue;
      |                                                               ^~~~~~~~~~
      |                                                                ;