Pagini recente » Cod sursa (job #2172351) | Cod sursa (job #496189) | Cod sursa (job #149261) | Cod sursa (job #2419272) | Cod sursa (job #2061740)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int N, M, x, y, ar[103][103], aj[103][103];
char a[103][103];
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1},
dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
struct nod {
int x, y;
};
void ClearScreen(int x[103][103]) {
int n;
printf( "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" );
for(int i = 1; i <= N; i++) {
for(int j = 1; j <= M; j++)
cout << x[i][j];
cout << "\n";
}
}
int lee(int xs, int ys, int x[103][103]) {
nod q[103 * 103] = {0};
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M; j++)
x[i][j] = 0;
for(int i = 0; i <= N + 1; i++)
x[i][0] = x[i][M + 1] = -1;
for(int i = 0; i <= M + 1; i++)
x[0][i] = x[N + 1][i] = -1;
int p = 1, u = 1;
x[xs][ys] = 1, q[u].x = xs, q[u].y = ys;
while(p <= u) {
int i = q[p].x, j = q[p].y;
for(int s = 0; s < 8; s++) {
int ii = i + dx[s], jj = j + dy[s];
if(a[ii][jj] == ' ' && x[ii][jj] == 0) x[ii][jj] = x[i][j] + 1, q[++u].x = ii, q[u].y = jj;
//ClearScreen(x);
}
p++;
}
return -1;
}
int main()
{
f >> N >> M;
f.get();
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M + 1; j++)
f.get(a[i][j]);
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M; j++) {
if(a[i][j] == 'R') lee(i, j, ar);
else if(a[i][j] == 'J') lee(i, j, aj);
}
int MIN = INT_MAX;
//ClearScreen(ar);
//ClearScreen(aj);
for(int i = 1; i <= N; i++)
for(int j = 1; j <= M; j++)
if(ar[i][j] == aj[i][j] && a[i][j] != 'R' && a[i][j] != 'J' && a[i][j] != 'X' && ar[i][j] > 0) {
if(MIN > ar[i][j]) MIN = ar[i][j], x = i, y = j;
}
g << x << " " << y << " " << MIN << "\n";
return 0;
}