Pagini recente » Cod sursa (job #242170) | Cod sursa (job #1531821) | Cod sursa (job #1578415) | Cod sursa (job #2796314) | Cod sursa (job #1370141)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,a[105][105],b[105][105],i,j,sol1,sol2,minim,l,c,x,y,u,p,i1,i2,j1,j2;
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
char q[2][100*100+5],xx[105][105];
int main(){
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++){
fin.get(xx[i]+1,102);
fin.get();
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(xx[i][j]=='X'){
a[i][j]=-1;
b[i][j]=-1;
}
if(xx[i][j]=='R'){
i1=i;
j1=j;
a[i][j]=1;
}
if(xx[i][j]=='J'){
i2=i;
j2=j;
b[i][j]=1;
}
}
}
p=1;u=1;q[0][p]=i1;q[1][p]=j1;
while(p<=u){
x=q[0][p];y=q[1][p];
for(i=0;i<4;i++){
l=x+dx[i];
c=y+dy[i];
if(a[l][c]==0 && l>=1 && l<=n && c>=1 && c<=m){
a[l][c]=a[x][y]+1;
u++;
q[0][u]=l;
q[1][u]=c;
}
}
p++;
}
p=1;u=1;q[0][p]=i2;q[1][p]=j2;
while(p<=u){
x=q[0][p];y=q[1][p];
for(i=0;i<4;i++){
l=x+dx[i];
c=y+dy[i];
if(b[l][c]==0 && l>=1 && l<=n && c>=1 && c<=m){
b[l][c]=b[x][y]+1;
u++;
q[0][u]=l;
q[1][u]=c;
}
}
p++;
}
minim=10000000;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(a[i][j]==b[i][j]+1 && a[i][j]>0){
if(minim>a[i][j]){
minim=a[i][j]-1;
sol1=i;
sol2=j;
}
}
}
}
fout<<minim<<" "<<sol1<<" "<<sol2<<"\n";
return 0;
}