Pagini recente » Cod sursa (job #1052493) | Cod sursa (job #502660) | Cod sursa (job #1774431) | Cod sursa (job #3239840) | Cod sursa (job #186699)
Cod sursa(job #186699)
#include <stdio.h>
#define INF 20000000
#define N 103
struct rj{
int x,y;
};
rj sr[N*N],sj[N*N];
int r[N][N],j[N][N],m,n;
const int lin[8]={1,-1,0,0,1,1,-1,-1};
const int col[8]={0,0,1,-1,1,-1,1,-1};
void leer(int x,int y){
for(int t=0;t<8;t++)
if(r[x+lin[t]][y+col[t]]==-2){
sr[++sr[0].x].x=x+lin[t];
sr[sr[0].x].y=y+col[t];
r[x+lin[t]][y+col[t]]=r[x][y]+1;
}
}
void leej(int x,int y){
for(int t=0;t<8;t++)
if(j[x+lin[t]][y+col[t]]==-2){
sj[++sj[0].x].x=x+lin[t];
sj[sj[0].x].y=y+col[t];
j[x+lin[t]][y+col[t]]=j[x][y]+1;
}
}
int main(){
int i,p,min=INF,x,y;
char c;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&m,&n);
for (i=1;i<=m;++i)
for (p=1;p<=n+1;++p){
scanf("%c",&c);
if (c==' '){
r[i][p]=-2;
j[i][p]=-2;
}
if (c=='R'){
sr[1].x=i;
sr[1].y=p;
r[i][p]=1;
}
if (c=='J'){
sj[1].x=i;
sj[1].y=p;
j[i][p]=1;
}
if (c=='X'){
r[i][p]=-1;
j[i][p]=-1;
}
}
sr[0].x=sj[0].x=1;
for(i=1;i<=sr[0].x;i++)
leer(sr[i].x,sr[i].y);
for(i=1;i<=sj[0].x;i++)
leej(sj[i].x,sj[i].y);
for(i=1;i<=m;i++)
for(p=1;p<=n;p++)
if(r[i][p]>0)
if(r[i][p]==j[i][p] && r[i][p]<min) {
min=r[i][p];
x=i;
y=p;
}
printf("%d %d %d\n",min,x,y);
return 0;
}