Pagini recente » Cod sursa (job #338808) | Cod sursa (job #3138010) | Cod sursa (job #3239349) | Cod sursa (job #2863997) | Cod sursa (job #2324642)
#include<cstdio>
struct celula{int linie,coloana;};
int romeo[101][101],julieta[101][101];
celula coada[10001];
int vlin[8]={-1,-1,0,1,1,1,0,-1};
int vcol[8]={0,1,1,1,0,-1,-1,-1};
int main(){
int inc,sf,rl,rc,jl,jc,n,m,x,y,min,i,j,l,col;
char c;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%c",&c);
if(c=='X')
romeo[i][j]=julieta[i][j]=-1;
else if(c=='R'){
rl=i;
rc=j;
}
else if(c=='J'){
jl=i;
jc=j;
}
}
scanf("%c",&c);
}
//bordarea
for(i=0;i<=n+1;i++)
romeo[i][0]=romeo[i][m+1]=julieta[i][0]=julieta[i][m+1]=-1;
for(j=0;j<=m+1;j++)
romeo[0][j]=romeo[n+1][j]=julieta[0][j]=julieta[n+1][j]=-1;
//romeo
inc=sf=1;
coada[1].linie=rl;
coada[1].coloana=rc;
romeo[rl][rc]=1;
while(inc<=sf){
for(i=0;i<=7;i++){
l=coada[inc].linie+vlin[i];
col=coada[inc].coloana+vcol[i];
if(romeo[l][col]==0){
sf++;
coada[sf].linie=l;
coada[sf].coloana=col;
romeo[l][col]=romeo[coada[inc].linie][coada[inc].coloana]+1;
}
}
inc++;
}
//julieta
inc=sf=1;
coada[1].linie=jl;
coada[1].coloana=jc;
julieta[jl][jc]=1;
while(inc<=sf){
for(i=0;i<=7;i++){
l=coada[inc].linie+vlin[i];
col=coada[inc].coloana+vcol[i];
if(julieta[l][col]==0){
sf++;
coada[sf].linie=l;
coada[sf].coloana=col;
julieta[l][col]=julieta[coada[inc].linie][coada[inc].coloana]+1;
}
}
inc++;
}
//locul de intalnire
min=10001;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(romeo[i][j]==julieta[i][j]&&romeo[i][j]<min&&romeo[i][j]>0){
min=romeo[i][j];
x=i;
y=j;
}
printf("%d %d %d",min,x,y);
return 0;
}