Pagini recente » Cod sursa (job #1896935) | Cod sursa (job #3353426) | Cod sursa (job #3313022) | Cod sursa (job #214337) | Cod sursa (job #3306473)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int dx[] = {-1,-1,-1,0,0,1,1,1};
int dy[] = {-1,0,1,-1,1,-1,0,1};
struct element{
bool ok;
int romoe,julieta;
}a[101][101];
struct coordonate{
int lin,col;};
queue<coordonate> coada;
int main(){
int n,m,r1,r2,j1,j2,nrmin,linmin,colmin;
char ch;
in >> n >> m;
nrmin = n * m + 1;
for(int i = 1; i <= n; i++){
in.get(ch);
for(int j = 1; j <= m; j++){
in.get(ch);
if(ch == 'X') a[i][j].ok = 1;
else if(ch == 'R'){
r1 = i;
r2 = j;}
else if(ch == 'J'){
j1 = i;
j2 = j;}}}
coada.push({r1,r2});
a[r1][r2].romoe = 1;
while(!coada.empty()){
int x = coada.front().lin;
int y = coada.front().col;
for(int i = 0; i <= 7; i++){
int xv = x + dx[i];
int yv = y + dy[i];
if(xv >= 1 && xv <= n && yv >= 1 && yv <= m && a[xv][yv].ok == 0 && a[xv][yv].romoe == 0){
a[xv][yv].romoe = a[x][y].romoe + 1;
coada.push({xv,yv});}}
coada.pop();}
coada.push({j1,j2});
a[j1][j2].julieta = 1;
while(!coada.empty()){
int x = coada.front().lin;
int y = coada.front().col;
for(int i = 0; i <= 7; i++){
int xv = x + dx[i];
int yv = y + dy[i];
if(xv >= 1 && xv <= n && yv >= 1 && yv <= m && a[xv][yv].ok == 0 && a[xv][yv].julieta == 0){
a[xv][yv].julieta = a[x][y].julieta + 1;
coada.push({xv,yv});}}
coada.pop();}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(a[i][j].ok == 0 && a[i][j].romoe == a[i][j].julieta && a[i][j].romoe > 0){
if(a[i][j].romoe < nrmin){
nrmin = a[i][j].romoe;
linmin = i;
colmin = j;}}}}
out << nrmin << " " << linmin << " " << colmin;
return 0;
}