# 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
```

(adsbygoogle = window.adsbygoogle || []).push({});

```

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));}
}
```

(adsbygoogle = window.adsbygoogle || []).push({});

```

I use C functions because they are faster.

+3

source to share

All Articles