Pagini recente » Cod sursa (job #1029140) | Cod sursa (job #3157162) | Cod sursa (job #159460) | Cod sursa (job #2297256) | Cod sursa (job #2949942)
#include <fstream>
#include <queue>
using namespace std;
int n,m,a[105][105],rom[105][105],jul[105][105];
ifstream fin("rj.in");
ofstream fout("rj.out");
int di[]={-1,-1,0,1,1,1,0,-1};
int dj[]={0,1,1,1,0,-1,-1,-1};
bool inmat(int i,int j){
return i>=1 && j>=1 && i<=n && j<=m;
}
lee1(int i,int j){
/// lee pt romeo
rom[i][j]=1;
queue<pair<int,int>>Q;
Q.push(make_pair(i,j));
while(!Q.empty()){
for(int ll=0;ll<=7;ll++){
int inou=di[ll]+Q.front().first;
int jnou=dj[ll]+Q.front().second;
if(a[inou][jnou]==0 && rom[inou][jnou]==0 && inmat(inou,jnou)){
Q.push(make_pair(inou,jnou));
rom[inou][jnou]=1+rom[Q.front().first][Q.front().second];
}
}
Q.pop();
}
}
lee2(int i,int j){
/// lee pt julieta
jul[i][j]=1;
queue<pair<int,int>>Q;
Q.push(make_pair(i,j));
while(!Q.empty()){
for(int ll=0;ll<=7;ll++){
int inou=di[ll]+Q.front().first;
int jnou=dj[ll]+Q.front().second;
if(a[inou][jnou]==0 && jul[inou][jnou]==0 && inmat(inou,jnou)){
Q.push(make_pair(inou,jnou));
jul[inou][jnou]=1+jul[Q.front().first][Q.front().second];
}
}
Q.pop();
}
}
char s[105];
int main(){
int x1,y1,x2,y2;
fin>>n>>m; fin.get();
for(int i=1;i<=n;i++){
fin.getline(s,105);
for(int j=0;j<m;j++)
if(s[j]=='R')
x1=i,y1=j+1;
else if(s[j]=='J')
x2=i,y2=j+1;
else if(s[j]=='X')
a[i][j+1]=1;
}
lee1(x1,y1); lee2(x2,y2); int min0=10000000,rez1,rez2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(rom[i][j]==jul[i][j] && rom[i][j]<min0 && rom[i][j]!=0)
min0=rom[i][j],rez1=i,rez2=j;
}
fout<<min0<<" "<<rez1<<" "<<rez2;
//cout<<min0<<" "<<rez1<<" "<<rez2;
return 0;
}