Pagini recente » Cod sursa (job #778054) | Cod sursa (job #1841197) | Cod sursa (job #2564414) | Cod sursa (job #561332) | Cod sursa (job #415780)
Cod sursa(job #415780)
#include<cstdio>
struct punct
{
int lin,col;
};
const int N=1<<7;
punct coada[N*N];
char tata[N][N],ma[N][N];
int n,m,a[N][N];
int dl[]={0,1,0,-1,1,1,-1,-1};
int dc[]={1,0,-1,0,1,-1,1,-1};
void lee()
{
int i,j,u=0;
punct x,y;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(ma[i][j]=='R')
{
coada[u].lin=i;
coada[u].col=j;
tata[i][j]='R';
u++;
}
else if(ma[i][j]=='J')
{
coada[u].lin=i;
coada[u].col=j;
tata[i][j]='J';
u++;
}
}
for(i=0;i<u;i++)
{
x.lin=coada[i].lin;
x.col=coada[i].col;
for(j=0;j<8;j++)
{
y.lin=x.lin+dl[j];
y.col=x.col+dc[j];
if(ma[y.lin][y.col]==' ')
{
if(a[y.lin][y.col]==0)
{
a[y.lin][y.col]=a[x.lin][x.col]+1;
coada[u++]=y;
tata[y.lin][y.col]=tata[x.lin][x.col];
}
else if(tata[y.lin][y.col]!=tata[x.lin][x.col] && a[y.lin][y.col]==a[x.lin][x.col]+1)
{
printf("%d %d %d",a[y.lin][y.col]+1,y.lin,y.col);
return;
}
}
}
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
for(int i=1;i<=n;i++)
gets(ma[i]+1);
for(int i=1;i<=n;i++)
ma[i][0]=ma[i][m+1]='X';
for(int j=1;j<=m;j++)
ma[0][j]=ma[n+1][j]='X';
lee();
return 0;
}