Pagini recente » Cod sursa (job #1076289) | Cod sursa (job #2530974) | Cod sursa (job #2144137) | Cod sursa (job #1947602) | Cod sursa (job #2135691)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,x1,x2,y1,y2,s,p,ic,iv,jc,jv;
char x;
int mini,minj,minim;
int a1[101][101],a2[101][101],c[2][100001];
int di[]={-1,-1,0,1,1,1,0,-1};
int dj[]={0,1,1,1,0,-1,-1,-1};
int main(){
fin>>n>>m;
fin.get(x);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fin.get(x);
if(x=='X')
a1[i][j]=a2[i][j]=-1;
if(x=='R'){
x1=i;
y1=j;
}
if(x=='J'){
x2=i;
y2=j;
}
}
if(x=='X'||x=='R'||x=='J')
fin.get(x);
}
c[0][1]=x1;
c[1][1]=y1;
a1[x1][y1]=1;
s=p=1;
while(s<=p){
ic=c[0][s];
jc=c[1][s];
for(int d=0;d<=7;d++){
iv=ic+di[d];
jv=dj[d]+jc;
if(iv>=1&&iv<=n&&jv>=1&&jv<=n&&a1[iv][jv]==0){
c[0][++p]=iv;
c[1][p]=jv;
a1[iv][jv]=1+a1[ic][jc];
}
}
s++;
}
for(int i=1;i<=s;i++)
c[0][i]=c[1][i]=0;
c[0][1]=x2;
c[1][1]=y2;
s=p=1;
a2[x2][y2]=1;
while(s<=p){
ic=c[0][s];
jc=c[1][s];
for(int d=0;d<=7;d++){
iv=ic+di[d];
jv=dj[d]+jc;
if(iv>=1&&iv<=n&&jv>=1&&jv<=n&&a2[iv][jv]==0){
c[0][++p]=iv;
c[1][p]=jv;
a2[iv][jv]=1+a2[ic][jc];
}
}
s++;
}
minim=2000000000;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a1[i][j]==a2[i][j]&&a1[i][j]<minim&&a1[i][j]>0){
minim=a1[i][j];
mini=i;
minj=j;
}
}
}
fout<<minim<<" "<<mini<<" "<<minj;
return 0;
}