Pagini recente » Cod sursa (job #1757220) | Cod sursa (job #1086748) | Cod sursa (job #2979420) | Cod sursa (job #1993511) | Cod sursa (job #2558362)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
long long n, m, mat[102][102], jul[102][102];
char chr;
const long long addLin[]={-1,-1,-1,0,1,1,1,0};
const long long addCol[]={-1,0,1,1,1,0,-1,-1};
struct Pos{
long long lin, col;
};
Pos r, j;
void scan(){
fin>>n>>m;
for(long long i=1; i<=n; i++){
fin.get();
for(long long jo=1; jo<=m; jo++){
fin.get(chr);
if(chr=='X'){
mat[i][jo]=jul[i][jo]=-1;
}else if(chr=='R'){
mat[i][jo]=1;
r.lin=i;
r.col=jo;
}else if(chr=='J'){
jul[i][jo]=1;
j.lin=i;
j.col=jo;
}
}
}
}
void border(){
for(long long i=0; i<=n+1; i++){
mat[i][0]=mat[i][n+1]=-1;
jul[i][0]=jul[i][n+1]=-1;
}
for(long long j=1; j<=n; j++){
mat[0][j]=mat[n+1][j]=-1;
jul[0][j]=jul[n+1][j]=-1;
}
}
Pos q[101*101];
Pos ngh, a;
int in=0, sf=0;
void lee(){
q[0]=r;
while(in<=sf){
a=q[in++];
for(int i=0; i<8; i++){
ngh.lin=a.lin+addLin[i];
ngh.col=a.col+addCol[i];
if(mat[ngh.lin][ngh.col]==0){
mat[ngh.lin][ngh.col]=mat[a.lin][a.col]+1;
q[++sf]=ngh;
}
}
}
in=0, sf=0;
q[0]=j;
while(in<=sf){
a=q[in++];
for(int io=0; io<8; io++){
ngh.lin=a.lin+addLin[io];
ngh.col=a.col+addCol[io];
if(jul[ngh.lin][ngh.col]==0){
jul[ngh.lin][ngh.col]=jul[a.lin][a.col]+1;
q[++sf]=ngh;
}
}
}
}
long long minim=10002;
Pos coord;
void solutie(){
for(long long i=1; i<=n; i++){
for(long long j=1; j<=m; j++){
if(mat[i][j]==jul[i][j] && mat[i][j]>0 && mat[i][j]<minim){
minim=mat[i][j];
coord.lin=i;
coord.col=j;
}
}
}
fout<<minim<<" "<<coord.lin<<" "<<coord.col;
}
int main(){
scan();
border();
lee();
solutie();
}