Pagini recente » Cod sursa (job #1940188) | Cod sursa (job #3329185) | Cod sursa (job #1406692) | Cod sursa (job #1733388) | Cod sursa (job #3308423)
#include <fstream>
#include <string>
#include <queue>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
int n, m;
char mat[101][101];
int a[101][101], b[101][101], dx[] = {-1, -1, 0, 1, 1, 1, 0, -1}, dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
bool in_mat (int i, int j) {
return i >= 1 && i <= n && j >= 1 && j <= m;
}
void lee (int istart, int jstart, int cnt[][101]) {
queue<pair<int, int>> q;
q.push({istart, jstart});
cnt[istart][jstart] = 1;
while (!q.empty()) {
pair<int, int> x = q.front();
q.pop();
for (int d = 0; d < 8; ++d) {
int i = x.first + dx[d], j = x.second + dy[d];
if (in_mat (i, j) && mat[i][j] == ' ' && cnt[i][j] == 0) {
cnt[i][j] = cnt[x.first][x.second] + 1;
q.push({i, j});
}
}
}
}
int main () {
fin >> n >> m;
fin.get();
for (int i = 1; i <= n; ++i) {
string s;
getline (fin, s);
for (int j = 1; j <= m; ++j)
mat[i][j] = s[j - 1];
}
int tmin = 1e5, x, y;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (mat[i][j] == 'R')
lee (i, j, a);
if (mat[i][j] == 'J')
lee (i, j, b);
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (a[i][j] && a[i][j] == b[i][j] && a[i][j] < tmin) {
tmin = a[i][j];
x = i;
y = j;
}
}
}
fout << tmin << ' ' << x << ' ' << y;
return 0;
}