Pagini recente » Cod sursa (job #540314) | Cod sursa (job #2686664) | Cod sursa (job #427858) | Cod sursa (job #1336166) | Cod sursa (job #2374791)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
struct pos{
int x, y;
};
pos Coada[105*105];
int a[105][105], prim, ultim, n, m, b[105][105], c[105][105];
int o[] = {1, 0, -1, 0, 1, -1, 1, -1};
int v[] = {0, 1, 0, -1, 1, -1, -1, 1};
void LeeR(){
int i, j, k;
while (prim <= ultim){
prim++;
i = Coada[prim].x;
j = Coada[prim].y;
for (k = 0;k < 8;k++){
int _i, _j;
_i = i+v[k];
_j = j+o[k];
if (_i > 0 && _j > 0 && _i <= n && j <= m && b[_i][_j] == 0 && a[_i][_j] == 0){
ultim++;
Coada[ultim].x = _i;
Coada[ultim].y = _j;
b[_i][_j] = b[i][j]+1;
}
}
}
}
void LeeJ(){
int i, j, k;
while (prim <= ultim){
prim++;
i = Coada[prim].x;
j = Coada[prim].y;
for (k = 0;k < 8;k++){
int _i, _j;
_i = i+v[k];
_j = j+o[k];
if (_i > 0 && _j > 0 && _i <= n && j <= m && c[_i][_j] == 0 && a[_i][_j] == 0){
ultim++;
Coada[ultim].x = _i;
Coada[ultim].y = _j;
c[_i][_j] = c[i][j]+1;
}
}
}
}
int main(){
int i, j, Jx, Jy, tmin = 99999, pozx, pozy;
char s[105];
fin >> n >> m;
fin.get();
for (i = 1;i <= n;i++){
fin.getline(s, sizeof(s));
for (j = 1;j <= m;j++){
if (s[j-1] == 'X')
a[i][j] = -1;
else if (s[j-1] == 'R'){
a[i][j] = 1;
b[i][j] = 1;
ultim++;
Coada[ultim].x = i;
Coada[ultim].y = j;
}
else if (s[j-1] == 'J'){
a[i][j] = 1;
b[i][j] = 1;
Jx = i;
Jy = j;
}
else a[i][j] = 0;
}
}
LeeR();
prim = 0;
ultim = 1;
Coada[ultim].x = Jx;
Coada[ultim].y = Jy;
c[Jx][Jy] = 1;
LeeJ();
for (i = 1;i <= n;i++)
for (j = 1;j <= m;j++)
if (b[i][j] == c[i][j] && b[i][j] > 1){
if (tmin > b[i][j]){
tmin = b[i][j];
pozx = i;
pozy = j;
}
}
fout << tmin << " " << pozx << " " << pozy;
return 0;
}