Pagini recente » Cod sursa (job #3258564) | Cod sursa (job #2955394) | Cod sursa (job #214447) | Cod sursa (job #1153237) | Cod sursa (job #2609974)
#include <bits/stdc++.h>
using namespace std;
int a[3][101][101],parc[3][101][101],n,m;
int dl[]={0,0,1,1,1,0,-1,-1,-1};
int dc[]={0,1,1,0,-1,-1,-1,0,1};
struct ura
{
int x,y;
};
ura q[10001];
bool check(int x,int y){
if(x>0 && x<=n && y>0 && y<=m)
return true;
return false;
}
void lee(int x,int y,int k){
int st=1,dr=1,kk,i,j;
q[st].x=x;
q[st].y=y;
a[k][x][y]=1;
parc[k][x][y]=1;
while(st<=dr){
for(kk=1;kk<=8;kk++){
i=q[st].x+dl[kk];
j=q[st].y+dc[kk];
if(check(i,j)==true && a[k][i][j]!=-1 && parc[k][i][j]==0){
++dr;
q[dr].x=i;
q[dr].y=j;
a[k][i][j]=a[k][q[st].x][q[st].y]+1;
parc[k][i][j]=1;
}
}
++st;
}
}
int main()
{
ifstream cin("rj.in");
ofstream cout("rj.out");
char c;
int i,j,x1,x2,y1,y2,ok;
cin>>n>>m;
cin.get(c);
for(i=1;i<=n;++i){
ok=0;
for(j=1;j<=m;++j){
cin.get(c);
if(c=='\n'){
j=m+1;
ok=1;
}
if(c=='X'){
a[1][i][j]=-1;
a[2][i][j]=-1;
parc[1][i][j]=-1;
parc[2][i][j]=-1;
}
if(c=='R')
{
x1=i;
y1=j;
}
if(c=='J'){
x2=i;
y2=j;
}
}
if(ok==0)
cin.get(c);
}
lee(x1,y1,1);
lee(x2,y2,2);
int tmin=99999999;
int x,y;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j){
if(a[1][i][j]==a[2][i][j] && a[1][i][j]>0){
if(a[1][i][j]<tmin){
tmin=a[1][i][j];
x=i;
y=j;
}
else
if(a[1][i][j]==tmin)
if(j<y){
tmin=a[1][i][j];
x=i;
y=j;
}
}
}
cout<<tmin<<" "<<x<<" "<<y;
return 0;
}