Pagini recente » Cod sursa (job #750358) | Cod sursa (job #2938644) | Cod sursa (job #1959033) | Cod sursa (job #2346836) | Cod sursa (job #2667848)
#include <fstream>
#define N 105
#define NN 10005
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,linR,colR,linJ,colJ,nrR[N][N],nrJ[N][N],answer,linfinal,colfinal;
char a[N][N];
int pr,ul,cx[NN],cy[NN];
int dx[8]={-1,-1,-1,0,0,1,1,1};
int dy[8]={-1,0,1,1,-1,1,0,-1};
void Citire()
{ int i,j;
char x;
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{ fin.get(x);
a[i][j]=x;
if(j==m)
fin.get();
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]=='R') {linR=i; colR=j;}
else if(a[i][j]=='J') {linJ=i; colJ=j;}
else if(a[i][j]=='X') {nrR[i][j]=-2; nrJ[i][j]=-2;}
}
void LeeR()
{ int i,j,cx_curent,cy_curent,cx_vecin,cy_vecin;
pr=ul=1;
cx[pr]=linR; cy[pr]=colR; nrR[linR][colR]=1; nrR[linJ][colJ]=-1;
while(pr<=ul)
{ cx_curent=cx[pr];
cy_curent=cy[pr];
for(i=0;i<=7;i++)
{ cx_vecin=cx_curent+dx[i];
cy_vecin=cy_curent+dy[i];
if(cx_vecin>=1 && cx_vecin<=n && cy_vecin>=1 && cy_vecin<=m &&
nrR[cx_vecin][cy_vecin]==0 || nrR[cx_vecin][cy_vecin]==-1 )
{ if(nrR[cx_vecin][cy_vecin]==-1)
break;
else
{ ul++;
cx[ul]=cx_vecin;
cy[ul]=cy_vecin;
nrR[cx_vecin][cy_vecin]=nrR[cx_curent][cy_curent]+1;
}
}
}
pr++;
}
}
void LeeJ()
{ int i,j,cx_curent,cy_curent,cx_vecin,cy_vecin;
pr=ul=1;
cx[pr]=linJ; cy[pr]=colJ; nrJ[linJ][colJ]=1; nrJ[linR][colR]=-1;
while(pr<=ul)
{ cx_curent=cx[pr];
cy_curent=cy[pr];
if(nrJ[cx_curent][cy_curent]==nrR[cx_curent][cy_curent])
{ answer=nrJ[cx_curent][cy_curent]; linfinal=cx_curent; colfinal=cy_curent;
break;
}
for(i=0;i<=7;i++)
{ cx_vecin=cx_curent+dx[i];
cy_vecin=cy_curent+dy[i];
if(cx_vecin>=1 && cx_vecin<=n && cy_vecin>=1 && cy_vecin<=m &&
nrJ[cx_vecin][cy_vecin]==0 || nrJ[cx_vecin][cy_vecin]==-1 )
{ if(nrJ[cx_vecin][cy_vecin]==-1)
break;
else
{ ul++;
cx[ul]=cx_vecin;
cy[ul]=cy_vecin;
nrJ[cx_vecin][cy_vecin]=nrJ[cx_curent][cy_curent]+1;
}
}
}
pr++;
}
}
int main()
{ int i,j;
Citire();
LeeR();
LeeJ();
/*
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
fout<<nrR[i][j]<<" ";
fout<<"\n";
}
*/
fout<<answer<<" "<<linfinal<<" "<<colfinal;
return 0;
}