Pagini recente » Cod sursa (job #782443) | Cod sursa (job #1847645) | Cod sursa (job #1040745) | Cod sursa (job #1730484) | Cod sursa (job #2694672)
#include <iostream>
#include <fstream>
#include <queue>
#include <cstring>
#include <limits.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int di[] = {-1, -1, 0, 1, 1, 1, 0, -1}, dj[] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, m, romeo[105][105], julieta[105][105], rx, ry, jx, jy;
char mat[105][105], line[105];
void citire() {
fin.getline(line, 105);
for (int i = 1; i <= n; i++) {
fin.getline(line, 105);
for (int j = 0; j < strlen(line); j++) {
mat[i][j + 1] = line[j];
if (mat[i][j + 1] == 'R') {
rx = i;
ry = j + 1;
}
if (mat[i][j + 1] == 'J') {
jx = i;
jy = j + 1;
}
}
}
}
void fill_coada(int l, int c, int vizitat[][105]) {
queue<pair<int, int>> q;
vizitat[l][c] = 1;
q.push(make_pair(l, c));
while (!q.empty()) {
int i = q.front().first, j = q.front().second;
q.pop();
for (int k = 0; k < 8; k ++) {
int nl = i + di[k], nc = j + dj[k];
if (mat[nl][nc] == ' ' && vizitat[nl][nc] == 0 && i >= 1 && i <= n && j >= 1 && j <= m) {
vizitat[nl][nc] = vizitat[i][j] + 1;
q.push(make_pair(nl, nc));
}
}
}
}
void afisarev(int v[][105]) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
cout << v[i][j] << ' ';
cout << endl;
}
}
int main() {
int minn = INT_MAX, lm, cm;
fin >> n >> m;
citire();
fill_coada(rx, ry, romeo);
fill_coada(jx, jy, julieta);
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
if (romeo[i][j] == julieta[i][j] && romeo[i][j] != 0)
if (romeo[i][j] < minn)
{
minn = romeo[i][j];
lm = i;
cm = j;
}
fout << minn << ' ' << lm << ' ' << cm;
return 0;
}