Pagini recente » Cod sursa (job #2485073) | Cod sursa (job #2752233) | Cod sursa (job #2058709) | Cod sursa (job #1482095) | Cod sursa (job #1593007)
#include <stdio.h>
#include <string.h>
char a[100][101];
int b[100][100],c[100][100],n,m;
struct Punct
{
int i,j;
}Romeo,Julieta;
Punct getPunct(int i,int j)
{
Punct p;
p.i=i;
p.j=j;
return p;
}
int di[]={0,1,0,-1};
int dj[]={1,0,-1,0};
Punct coada[100*100];
void lee1()
{
int inc=0,sf=-1;
coada[++sf]=getPunct(Romeo.i,Romeo.j);
int i,j,ni,nj;
while(inc<=sf)
{
i=coada[inc].i;
j=coada[inc].j;
++inc;
for(int d=0;d<4;d++)
{
ni=i+di[d];
nj=j+dj[d];
if(ni>=0 && ni<n && nj>=0 && nj<m && a[ni][nj]!='X' && b[ni][nj]<1)
{
b[ni][nj]=b[i][j]+1;
coada[++sf]=getPunct(ni,nj);
}
}
}
}
void lee2()
{
int inc=0,sf=-1;
coada[++sf]=getPunct(Julieta.i,Julieta.j);
int i,j,ni,nj;
while(inc<=sf)
{
i=coada[inc].i;
j=coada[inc].j;
++inc;
for(int d=0;d<4;d++)
{
ni=i+di[d];
nj=j+dj[d];
if(ni>=0 && ni<n && nj>=0 && nj<m && a[ni][nj]!='X' && c[ni][nj]<1)
{
c[ni][nj]=c[i][j]+1;
coada[++sf]=getPunct(ni,nj);
if(c[ni][nj]==b[ni][nj])
{
printf("%d %d %d",c[ni][nj],ni+1,nj+1);
return;
}
}
}
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d %d ",&n,&m);
for(int i=0;i<n;i++){
fgets(a[i],100,stdin);
char *p=strchr(a[i],'R');
if(p)
{
Romeo.i=i;
Romeo.j=p-a[i];
}
p=strchr(a[i],'J');
if(p)
{
Julieta.i=i;
Julieta.j=p-a[i];
}
}
lee1();
lee2();
return 0;
}