Pagini recente » Cod sursa (job #3284777) | Cod sursa (job #3166830) | Cod sursa (job #3206878) | Cod sursa (job #1324245) | Cod sursa (job #2653602)
#include <iostream>
#include <queue>
#include <fstream>
#include <climits>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int NMAX=180;
char strng[NMAX][NMAX];
int a[NMAX][NMAX],b[NMAX][NMAX],n,m,mini=INT_MAX,minix,miniy;
int di[8]={-1,-1,0,1,1,1,0,-1};
int dj[8]={0,1,1,1,0,-1,-1,-1};
void read(){
f>>n>>m;
for(int i=0;i<=n;i++){
f.getline(strng[i],NMAX,'\n');
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(strng[i][j]==' '){a[i][j]=0;b[i][j]=0;}
else if(strng[i][j]=='X'){a[i][j]=-1;b[i][j]=-1;}
}
cout<<"\n";
}
for(int i=0;i<=n+1;i++){
a[i][n+1]=-1;
a[n+1][i]=-1;
a[0][i]=-1;
a[i][0]=-1;
}
for(int i=0;i<=n+1;i++){
b[i][n+1]=-1;
b[n+1][i]=-1;
b[0][i]=-1;
b[i][0]=-1;
}
}
pair<int,int> rj(char src){
for(int i=1;i<n;i++){
for(int j=1;j<=m;j++){
if(strng[i][j]==src){
pair<int,int> coord;
coord={i,j};
return coord;
}
}
}
}
void lee(pair<int,int> coord, char tip){
int x1=coord.first;
int y1=coord.second;
if(tip='R')
a[x1][y1]=1;
else
b[x1][y1]=1;
queue<pair<int,int> > q;
q.push({x1,y1});
while(!q.empty()){
int x,y;
x=q.front().first, y=q.front().second;
q.pop();
for(int d=0;d<8;d++){
if(tip=='R')
if(a[x+di[d]][y+dj[d]]==0){
q.push({x+di[d],y+dj[d]});
a[x+di[d]][y+dj[d]]=a[x][y]+1;
}
else
if(b[x+di[d]][y+dj[d]]==0){
q.push({x+di[d],y+dj[d]});
b[x+di[d]][y+dj[d]]=b[x][y]+1;
}
}
}
}
int main()
{
read();
lee(rj('R'),'R');
lee(rj('J'),'J');
for(int j=1;j<=m;j++){
for(int i=1;i<=n;i++){
if(a[i][j]==b[i][j]&&a[i][j]!=-1&&a[i][j]<mini){mini=a[i][j];minix=i;miniy=j;}
}
}
cout<<mini<<" "<<minix<<" "<<miniy;
return 0;
}