Cod sursa(job #410824)
#include<stdio.h>
int a[105][105]={0},b[105][105],u;
struct nod
{
int l,c;
};
nod x,y,coada[10000];
void bfs()
{
int dl[]={-1,-1,0,1,1,1,0,-1};
int dc[]={0,1,1,1,0,-1,-1,-1};
int p=0,i;
bool k=true;
x=coada[p];
for(p=0;k==true;++p)
{
for(i=0;i<7;++i)
{
y.l=coada[p].l+dl[i];
y.c=coada[p].c+dc[i];
if(b[y.l][y.c])
{
printf("%d %d %d",b[y.l][y.c],y.l,y.c);
k=false;
}
if(a[y.l][y.c]!=-1)
{
coada[u++]=y;
b[y.l][y.c]+=b[x.l][x.c];
}
}
x.l=y.l;
x.c=y.c;
p++;
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int n,m,i,j;
char s[105];
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;++i)
{
//scanf("%c",&c);
gets(s+1);
for(j=1;j<=m;++j)
{
//scanf("%c",&c);
if(s[j]=='X') a[i][j]=-1;
if(s[j]=='R') {a[i][j]=1;b[i][j]=0;coada[u].l=i;coada[u++].c=j;}
if(s[j]=='J') {a[i][j]=1;b[i][j]=0;coada[u].l=i;coada[u++].c=j;}
}
}
bfs();
return 0;
}