Pagini recente » Cod sursa (job #684539) | Cod sursa (job #1252852) | Cod sursa (job #23019) | Cod sursa (job #1636840) | Cod sursa (job #78994)
Cod sursa(job #78994)
#include <cstdio>
#include <cstdlib>
#include <string>
const int vx[4]={0,1,0,-1};
const int vy[4]={1,0,-1,0};
int m,n,rx,ry,jx,jy;
int** lrom;
int** ljul;
char** ob;
void iofile(void)
{
int i,j;
char c;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d",&m,&n);
c=getchar();
lrom=(int **)malloc(m*sizeof(int *));
ljul=(int **)malloc(m*sizeof(int *));
ob=(char **)malloc(m*sizeof(char *));
for (i=0;i<m;i++)
{
*(lrom+i)=(int *)malloc(n*sizeof(int));
*(ljul+i)=(int *)malloc(n*sizeof(int));
*(ob+i)=(char *)malloc(n*sizeof(char));
};
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
lrom[i][j]=-1;
ljul[i][j]=-1;
}
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
ob[i][j]=getchar();
if (ob[i][j]=='R')
{
rx=i;
ry=j;
} else
if (ob[i][j]=='J')
{
jx=i;
jy=j;
}
}
c=getchar();
}
fclose(stdin);
}
void lee(int xi,int yi, int** a)
{
typedef struct
{
int x,y;
} coord;
coord c[10001];
int** b;
int p,u,xx,yy,i,j;
b=(int **)malloc(m*sizeof(int *));
for (i=0;i<m;i++)
{
b[i]=(int *)malloc(n*sizeof(int));
for (j=0;j<n;j++)
{
b[i][j]=0;
}
}
c[0].x=xi;
c[0].y=yi;
b[xi][yi]=1;
p=u=0;
a[xi][yi]=0;
while (p<=u)
{
for (i=0;i<4;i++)
{
xx=c[p].x+vx[i];
yy=c[p].y+vy[i];
if ((xx>=0)&&(xx<m)&&(yy>=0)&&(yy<n)&&(ob[xx][yy]!='X')&&(b[xx][yy]==0))
{
u++;
c[u].x=xx;
c[u].y=yy;
b[xx][yy]=1;
a[xx][yy]=a[c[p].x][c[p].y]+1;
}
}
p++;
}
}
void con_lee()
{
lee(rx,ry,lrom);
lee(jx,jy,ljul);
}
void prel(void)
{
int i,j,min,xmin,ymin;
min=-1;
xmin=0;
ymin=0;
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{
if (lrom[i][j]!=-1)
{
if (lrom[i][j]==ljul[i][j])
{
if ((min==-1)||(lrom[i][j]<min))
{
min=lrom[i][j];
xmin=i+1;
ymin=j+1;
}
}
}
}
printf("%d %d %d\n",min,xmin,ymin);
fclose(stdout);
}
int main(void)
{
iofile();
con_lee();
prel();
return 0;
}