Pagini recente » Cod sursa (job #2157253) | Cod sursa (job #3166083) | Cod sursa (job #3135419) | Cod sursa (job #2538631) | Cod sursa (job #2774958)
#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,1,-1,1,-1};
int dy[]={-1,1,0,0,1,-1,-1,1};
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<=7;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=999999999;
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];
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b1[i][j]==b2[i][j]&&b2[i][j]!=0){
if(b1[i][j]<mini){
is=i;js=j;
mini=b1[i][j];
}
}
}
}
fout<<mini<<" "<<is<<" "<<js;
return 0;
}