Pagini recente » Cod sursa (job #3231326) | Cod sursa (job #3234875) | Cod sursa (job #3289781) | Cod sursa (job #3284234) | Cod sursa (job #3164728)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m;
const int di[] = {0,1,0,-1,1,1,-1,-1};
const int dj[] = {1,0,-1,0,1,-1,-1,1};
int a[110][110],b[110][110];
int matr[110][110],matj[110][110];
queue<pair<int,int>> q;
bool inmat(int i,int j){
if(i >=1 && i <= n && j >=1 && j <= m){
return 1;
};
return 0;
}
void Lee(int istart,int jstart,int mat[][110]){
while(!q.empty()){
q.pop();
};
for(int i = 1; i <=n; i++){
for(int j = 1; j <=m; j++){
b[i][j] = 0;
}
};
mat[istart][jstart] = 1;
b[istart][jstart] = -1;
q.push(make_pair(istart,jstart));
while(!q.empty()){
int i = q.front().first;
int j = q.front().second;
for(int k = 0; k <8; k++){
int ii = i+di[k];
int jj = j+dj[k];
if(inmat(ii,jj) && b[ii][jj] != -1 && a[ii][jj] == 0){
b[ii][jj] = -1;
mat[ii][jj] = mat[i][j] + 1;
q.push(make_pair(ii,jj));
}
};
q.pop();
}
}
int main()
{
fin >> n >> m;
fin.ignore();
char l[110];
int ir,jr;
int ij,jjj;
for(int i = 1; i <=n; i++){
fin.getline(l,110);
for(int j = 1; j <=m; j++){
if(l[j-1] == 'X'){
a[i][j] = 1;
}else if(l[j-1] == ' '){
a[i][j] = 0;
}else if(l[j-1] == 'R'){
a[i][j] = -1;
ir = i;
jr = j;
}else if(l[j-1] == 'J'){
a[i][j] = -1;
ij = i;
jjj = j;
}
}
};
/*for(int i = 1; i <=n; i++,cout << endl){
for(int j = 1; j <=m; j++){
cout << a[i][j] << " ";
}
}
cout << endl;*/
Lee(ir,jr,matr);
/*for(int i = 1; i <=n; i++,cout << endl){
for(int j = 1; j <=m; j++){
cout << matr[i][j] << " ";
}
}
cout << endl;*/
Lee(ij,jjj,matj);
/* for(int i = 1; i <=n; i++,cout << endl){
for(int j = 1; j <=m; j++){
cout << matj[i][j] << " ";
}
}
cout << endl;
*/
int tmin = INT_MAX;
int xr,yr;
for(int i = 1; i <=n; i++){
for(int j = 1; j <=m; j++){
if(a[i][j] == 0 && matr[i][j] != 0 && matj[i][j]!=0){
if(matr[i][j] == matj[i][j]){
if(matr[i][j] < tmin){
tmin = matr[i][j];
xr = i;
yr = j;
}else if(matr[i][j] == tmin){
if(i < xr){
tmin = matr[i][j];
xr = i;
yr = j;
}else if(i == xr){
if(j < yr){
tmin = matr[i][j];
xr = i;
yr = j;
};
}
}
}
}
}
};
fout << tmin << " " << xr << " " << yr;
return 0;
}