Pagini recente » Cod sursa (job #2384539) | Cod sursa (job #205961) | Cod sursa (job #1949247) | Cod sursa (job #2399566) | Cod sursa (job #2774956)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m;
int a[101][101],b1[101][101],b2[101][101];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
bool inmat(int i,int j){
return i>=1&&j>=1&&i<=n&&j<=m;
}
void lee(int is,int js,int b[][101]){
queue<pair<int,int>>q;
b[is][js]=1;
q.push(make_pair(is,js));
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int i=0;i<=3;i++){
int x1=dx[i]+x;
int y1=dy[i]+y;
if(inmat(x1,y1)&&a[x1][y1]==0&&b[x1][y1]==0){
b[x1][y1]=b[x][y]+1;
q.push(make_pair(x1,y1));
}
}
}
}
char c[101];
int main()
{
fin>>n>>m;
int i1,j1,i2,j2;
fin.get();
for(int i=1;i<=n;i++){
fin.getline(c,m+1);
for(int j=0;c[j];j++){
if(c[j]=='X') a[i][j+1]=1;
else if(c[j]=='R'){
i1=i;j1=j+1;
}
else if(c[j]=='J'){
i2=i;j2=j+1;
}
}
}
lee(i1,j1,b1);
lee(i2,j2,b2);
int is,js,mini=9999999;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b1[i][j]==b2[i][j]&&b1[i][j]){
if(b1[i][j]<mini){
is=i;js=j;
mini=b1[i][j];
}
}
}
}
fout<<mini-1<<" "<<is<<" "<<js;
return 0;
}