Pagini recente » Cod sursa (job #2113611) | Cod sursa (job #2825338) | Cod sursa (job #3177179) | Cod sursa (job #360748) | Cod sursa (job #3231027)
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
ifstream cin ("rj.in");
ofstream cout ("rj.out");
int n,m,i,j,xr,yr,xj,yj,b1[105][105],b2[105][105],v[105][105];
char a[10005];
int dx[]={0,0,1,1,1,-1,-1,-1};
int dy[]={1,-1,1,-1,0,1,-1,0};
queue<pair<int,int>>q;
void Lee(int x,int y,int b[105][105])
{
b[x][y]=1;
q.push({x,y});
while(!q.empty())
{
int i=q.front().first,j=q.front().second;
for(int kk=0;kk<8;kk++)
{
int xnou=i+dx[kk];
int ynou=j+dy[kk];
if(xnou>=0 && xnou<n && ynou>=0 && ynou<m && b[xnou][ynou]==0 && v[xnou][ynou]==0)
{
q.push({xnou,ynou});
b[xnou][ynou]=b[i][j]+1;
}
}
q.pop();
}
}
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(NULL);
cin>>n>>m;
cin.getline(a,105);
for(i=0;i<n;i++)
{
cin.getline(a,105);
for(j=0;j<m;j++)
{
if(a[j]=='X')
v[i][j]=1;
if(a[j]=='R')
{
xr=i;
yr=j;
}
if(a[j]=='J')
{
xj=i;
yj=j;
}
}
}
Lee(xr,yr,b1);
Lee(xj,yj,b2);
int mini=1e9,xx=0,yy=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b1[i][j]==b2[i][j] && b1[i][j]<mini && b1[i][j]!=0)
{
mini=b1[i][j];
xx=i+1;
yy=j+1;
}
}
}
cout<<mini<<' '<<xx<<' '<<yy;
return 0;
}