Pagini recente » Cod sursa (job #2301940) | Cod sursa (job #2353500) | Cod sursa (job #2292853) | Cod sursa (job #2846246) | Cod sursa (job #2135454)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("rj.in");
ofstream out ("rj.out");
int n, m;
int R[105][105], J[105][105];
string s;
int rsx, rsy, jsx, jsy, mini = 0x7fffffff;
int fx, fy;
int dx[4] = { -1, 0, 1, 0};
int dy[4] = { 0, 1, 0, -1};
bool OK( int x, int y )
{
if( x < 1 || y < 1 || x > n || y > m )
return false;
return true;
}
void lee( int sx, int sy, int arr[][105] )
{
queue< pair<int, int> > coada;
int x, y, xv, yv;
coada.push( make_pair(sx, sy) );
while( !coada.empty() )
{
x = coada.front().first;
y = coada.front().second;
coada.pop();
for( int i = 0; i <= 3; i++ )
{
xv = x + dx[i];
yv = y + dy[i];
if( OK( xv, yv ) && arr[xv][yv] == 0 )
{
arr[xv][yv] = arr[x][y] + 1;
coada.push( make_pair(xv, yv) );
}
}
}
}
int main()
{
in>>n>>m;
getline( in, s, '\n' );
for( int i = 1; i <= n; i++ )
{
getline( in, s, '\n' );
for( int j = 0; j < m; j++ )
if( s[j] == '\0' )
R[i][j+1] = J[i][j+1] = 0;
else if( s[j] == 'X' )
R[i][j+1] = J[i][j+1] = -1;
else if( s[j] == 'R' )
R[i][j+1] = 1, rsx = i, rsy = j + 1;
else if( s[j] == 'J' )
J[i][j+1] = 1, jsx = i, jsy = j + 1;
}
lee( rsx, rsy, R );
lee( jsx, jsy, J );
for( int i = 1; i <= n; i++ )
for( int j = 1; j <= n; j++ )
if( R[i][j] == J[i][j] && R[i][j] > 0 )
if( mini > R[i][j] )
{
mini = R[i][j];
fx = i;
fy = j;
}
out<<mini - 1<<" "<<fx<<" "<<fy;
return 0;
}