Pagini recente » Cod sursa (job #1495998) | Cod sursa (job #2576) | Cod sursa (job #2914574) | Cod sursa (job #1076258) | Cod sursa (job #2578595)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, a[101][101], rom[101][101], jul[101][101];
char s[102];
int dl[8] = {0, 0, -1, -1, -1, 1, 1, 1};
int dc[8] = {1, -1, -1, 1, 0, -1, 0, 1};
struct patratica
{
int x;
int y;
};
void Lee(int lin, int col, int mat[101][101])
{
patratica c[10002];
int pr, ul, xc, yc, xv, yv, i;
pr = ul = 1;
c[1].x = lin;
c[1].y = col;
mat[lin][col] = 1;
while(pr <= ul)
{
xc = c[pr].x;
yc = c[pr].y;
for(i = 0; i < 8; i++)
{
xv = xc + dl[i];
yv = yc + dc[i];
if((mat[xv][yv] == 0 || mat[xv][yv] == -2 || mat[xv][yv] == -3)&& xv <= n && xv >= 1 && yv <= m && yv >= 1)
{
mat[xv][yv] = mat[xc][yc] + 1;
ul++;
c[ul].x = xv;
c[ul].y = yv;
}
}
pr++;
}
}
int main()
{
int i, j, rx, ry, jx, jy;
fin >> n >> m;
fin.get();
for(i = 1; i <= n; i++)
{
fin.getline(s, 101);
int len = strlen(s);
for(j = 0; j < len; j++)
{
if(s[j] == 'R') {a[i][j + 1] = -2; rx = i; ry = j + 1;}
if(s[j] == 'J') {a[i][j + 1] = -3; jx = i; jy = j + 1;}
if(s[j] == 'X') a[i][j + 1] = -1;
rom[i][j + 1] = jul[i][j + 1] = a[i][j + 1];
}
}
/*for(i = 1; i <= n; i++)
{
for(j = 1; j <= m; j++)
cout << a[i][j] << " ";
cout << "\n";
}
*/
Lee(rx, ry, rom);
/*for(i = 1; i <= n; i++)
{for(j = 1; j <= m; j++)
{
cout << rom[i][j] << " ";
}
cout << endl;
}
*/
Lee(jx, jy, jul);
int minim = 2000000000, x_intalnire, y_intalnire;
for(i = 1; i <= n; i++)
for(j = 1; j <= m; j++)
{
if(rom[i][j] == jul[i][j] && rom[i][j] > 0 && rom[i][j] < minim)
{
minim = rom[i][j];
x_intalnire = i;
y_intalnire = j;
}
}
fout << minim << " " << x_intalnire << " " << y_intalnire;
return 0;
}