How to Solve Lee Algorithm in C ++?

I am trying to solve a C ++ problem with Lee's (maze) algorithm. I need to find a place where two people meet at the same time (shortest) knowing that R and J are where they start and X are obstacles. This is what rj.in looks like:

5 8
XXR  XXX
 X  X  X
J X X  X
      XX
XXX XXXX

      

And the problem is, when I read it, it always has the same meaning. What am I doing wrong? This is my code and here's where the problem comes in:

#include <iostream>
#include <queue>
#include <cstdio>

using namespace std;
#define ex -1
#define red(X) scanf("%d",&X);
const int MAX=150;
int ro [MAX][MAX],ju [MAX][MAX];
inline int inside(int x,int y,int n,int m)
{
    return x>=1 and x<=n and y>=1 and y<=m;
}
queue<pair<int,int> > Qr;
queue<pair<int,int> > Qj;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
int main()
{  freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int rx_n,ry_n,jx_n,jy_n,n,m,i,j,t;

    red(n);
    red(m);
  for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
  {


red(t); 
printf("%d ",t);


if((char)t=='X') {ro[i][j]=-1; ju[i][j]=-1;  }
      if((char)t=='R') {ro[i][j]=1; Qr.push(make_pair(i,j));}
      if((char)t=='J') {ju[i][j]=1; Qj.push(make_pair(i,j));}
  }

      

I use C functions because they are faster.

+3


source to share





All Articles