Pagini recente » Cod sursa (job #1062219) | Cod sursa (job #2111408) | Cod sursa (job #508101) | Cod sursa (job #431306) | Cod sursa (job #2949523)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int di[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dj[] = {0, 1, 0, -1, -1, 1, 1, -1};
int n, m, matrLeeR[105][105], matrLeeJ[105][105];
int iR, jR, iJ, jJ;
bool v[105][105];
bool inMat(int i, int j) {
return i >= 1 && i <= n && j >= 1 && j <= m;
}
void lee(int i, int j, int matrLee[105][105]) {
queue<pair<int, int>> Q;
Q.push({i, j});
matrLee[i][j] = 1;
while(!Q.empty()) {
i = Q.front().first;
j = Q.front().second;
Q.pop();
for(int d = 0; d < 8; d++) {
int ii = i + di[d];
int jj = j + dj[d];
if(inMat(ii, jj) && v[ii][jj] && matrLee[ii][jj] == 0) {
matrLee[ii][jj] = matrLee[i][j] + 1;
Q.push({ii, jj});
}
}
}
}
int main() {
fin >> n >> m;
fin.get();
string s;
for(int i = 1; i <= n; i++) {
getline(fin, s);
for(int j = 1; j <= m; j++) {
v[i][j] = (s[j - 1] == ' ');
if(s[j - 1] == 'R') {
iR = i, jR = j;
} else if(s[j - 1] == 'J') {
iJ = i, jJ = j;
}
}
}
lee(iR, jR, matrLeeR);
lee(iJ, jJ, matrLeeJ);
int tmin = 2e9, x = 0, y = 0;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
if(matrLeeR[i][j] == matrLeeJ[i][j] && matrLeeR[i][j] > 0) {
if(matrLeeR[i][j] < tmin) {
tmin = matrLeeR[i][j];
x = i, y = j;
}
}
}
}
fout << tmin << " " << x << " " << y;
return 0;
}