Pagini recente » Cod sursa (job #2106086) | Cod sursa (job #1170474) | Cod sursa (job #2849915) | Cod sursa (job #761529) | Cod sursa (job #2326839)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
int n,m;
int tmin=9999,r_i,r_j,j_i,j_j,t_i,t_j;
int r_m[100][100],j_m[100][100];
char sir[101];
inline void lee(int si,int sj, int in_m[][100]) {
int dx[]= {0,0,1,-1,1,-1,1,-1},dy[]= {1,-1,0,0,1,1,-1,-1};
queue<int> qx,qy;
in_m[si][sj]=1;
qx.push(si);
qy.push(sj);
int x,y,_x,_y;
while(!qx.empty()&&!qy.empty()) {
x=qx.front();
y=qy.front();
qx.pop();
qy.pop();
for(int i=0; i<8; ++i) {
_x=x+dx[i];
_y=y+dy[i];
if(_x>=0&&_y>=0&&_x<=n&&_y<=m&&in_m[_x][_y]==0) {
in_m[_x][_y]=in_m[x][y]+1;
qx.push(_x);
qy.push(_y);
}
}
}
}
int main() {
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
cin >> n >> m;
cin.get();
for(int i=0; i<n; ++i) {
cin.getline(sir,101);
for(int j=0; j<strlen(sir); ++j) {
if(sir[j]=='X') {
r_m[i][j]=-1;
j_m[i][j]=-1;
} else if(sir[j]=='R') {
r_i=i;
r_j=j;
} else if(sir[j]=='J') {
j_i=i;
j_j=j;
}
}
}
lee(r_i,r_j,r_m);
lee(j_i,j_j,j_m);
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
if(r_m[i][j]==j_m[i][j]&&r_m[i][j]>0)
if(r_m[i][j]<tmin) {
tmin = r_m[i][j];
t_i=i;
t_j=j;
}
cout << tmin << ' ' << t_i+1 << ' ' << t_j+1;
return 0;
}