Pagini recente » Cod sursa (job #606939) | Cod sursa (job #2840761) | Cod sursa (job #951552) | Cod sursa (job #2011595) | Cod sursa (job #3222579)
#include <bits/stdc++.h>
using namespace std;
struct coord{
int lin, col;
};
int a[105][105], b[105][105], dir[8][2] = { { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, 1 }, { 1, 1 }, { 1, 0 }, { 1, -1 }, { 0, -1 } };
int main(){
int n, m, i, j, r1, r2, j1, j2, lin, col, l, c, min;
string s;
ifstream fin( "rj.in" );
ofstream fout( "rj.out" );
fin >> n >> m;
fin.get();
r1 = r2 = j1 = j2 = -1;
for( i = 0; i < n; i++ ){
getline( fin, s );
for( j = 0; j < m; j++ ){
if( s[j] == 'R' ){
a[i][j] = 1;
r1 = i;
r2 = j;
}
else if( s[j] == 'J' ){
b[i][j] = 1;
j1 = i;
j2 = j;
}
else if( s[j] == 'X' ){
a[i][j] = -1;
b[i][j] = -1;
}
}
}
queue <coord> q1;
q1.push( { r1, r2 } );
while( q1.empty() == false ){
lin = q1.front().lin;
col = q1.front().col;
///cout << lin << ' ' << col << '\n';
q1.pop();
for( i = 0; i < 8; i++ ){
l = lin + dir[i][0];
c = col + dir[i][1];
if( 0 <= l && l < n && 0 <= c && c < m && a[l][c] == 0 ){
a[l][c] = a[lin][col] + 1;
q1.push( { l, c } );
}
}
}
queue <coord> q2;
q2.push( { j1, j2 } );
while( q2.empty() == false ){
lin = q2.front().lin;
col = q2.front().col;
q2.pop();
for( i = 0; i < 8; i++ ){
l = lin + dir[i][0];
c = col + dir[i][1];
if( 0 <= l && l < n && 0 <= c && c < m && b[l][c] == 0 ){
b[l][c] = b[lin][col] + 1;
q2.push( { l, c } );
}
}
}
/**for( i = 0; i < n; i++ ){
for( j = 0; j < m; j++ ){
if( a[i][j] == -1 ){
cout << 'X' << ' ';
}
else{
cout << a[i][j] << ' ';
}
}
cout << '\n';
}
cout << '\n';
for( i = 0; i < n; i++ ){
for( j = 0; j < m; j++ ){
if( b[i][j] == -1 ){
cout << 'X' << ' ';
}
else{
cout << b[i][j] << ' ';
}
}
cout << '\n';
}*/
min = -1;
for( i = 0; i < n; i++ ){
for( j = 0; j < m; j++ ){
if( a[i][j] > 0 && a[i][j] == b[i][j] && ( a[i][j] < min || min == -1 ) ){
min = a[i][j];
}
}
}
i = 0;
j = 0;
while( a[i][j] <= 0 || a[i][j] != b[i][j] || a[i][j] != min ){
j++;
if( j == m ){
i++;
j = 0;
}
}
fout << a[i][j] << ' ' << i + 1 << ' ' << j + 1;
return 0;
}