Pagini recente » Borderou de evaluare (job #1773485) | Cod sursa (job #1662411) | Cod sursa (job #1024563) | Cod sursa (job #2781407)
#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, -1, 0, 1, -1, 1, -1, 1};
int dy[] = {-1, 0, 1, 0, 1, -1, -1, 1};
int R[105][105], J[105][105];
int tmin = 100000;
char c;
queue< pair<int, int> > q;
void lee(pair<int, int>p, int a[105][105])
{
int x, y;
q.push(p);
while(q.size()){
p = q.front();
q.pop();
for(int i = 0; i < 8; i++){
x = dx[i]+p.first;
y = dy[i]+p.second;
if(a[x][y] == 0){
a[x][y] = a[p.first][p.second]+1;
q.push({x, y});
}
}
}
}
int main(){
ifstream fin("rj.in");
ofstream fout("rj.out");
string s;
int n, m, ri, rj, ji, jj;
fin >> n >> m; getline(fin, s);
for(int i = 0; i <= n+1; i++)
R[i][0] = R[i][m+1] = J[i][0] = J[i][m+1] = -1;
for(int j = 0; j <= m+1; j++)
R[0][j] = R[n+1][j] = J[0][j] = J[n+1][j] = -1;
for(int i = 1; i <= n; i++) {
getline(fin, s);
for(int j = 1; j <= m; j++){
c = s[j-1];
if(c == 'R'){
ri = i;
rj = j;
R[i][j] = 1;
}
if(c == 'J'){
ji = i;
jj = j;
J[i][j] = 1;
}
if(c == 'X')
R[i][j] = J[i][j] = -1;
else if(c == ' ')
R[i][j] = J[i][j] = 0;
}
}
lee({ri, rj}, R);
lee({ji, jj}, J);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++){
if(R[i][j] == J[i][j] && R[i][j] > 0 && R[i][j] < tmin) {
tmin = R[i][j];
ri = i; rj = j;
}
}
fout << tmin << ' ' << ri << ' ' << rj;
}