Pagini recente » Cod sursa (job #2102497) | Cod sursa (job #1758648) | Cod sursa (job #2027419) | Cod sursa (job #1221883) | Cod sursa (job #702429)
Cod sursa(job #702429)
#include<stdio.h>
#include<limits.h>
struct coord
{
int x,y;
};
void bordare(int a[101][101], int n, int m)
{
int i;
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=-1;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=-1;
}
void lee(int m[101][101],coord poz)
{
int x,y,inc=1,sf=0;
coord coada[10201];
sf++;
coada[sf].x=poz.x;
coada[sf].y=poz.y;
while(inc<=sf)
{
x=coada[inc].x;
y=coada[inc].y;
if(m[x+1][y]==0)
{
sf++;
coada[sf].x=x+1;
coada[sf].y=y;
m[x+1][y]=m[x][y]+1;
}
if(m[x-1][y]==0)
{
sf++;
coada[sf].x=x-1;
coada[sf].y=y;
m[x-1][y]=m[x][y]+1;
}
if(m[x][y+1]==0)
{
sf++;
coada[sf].x=x;
coada[sf].y=y+1;
m[x][y+1]=m[x][y]+1;
}
if(m[x][y-1]==0)
{
sf++;
coada[sf].x=x;
coada[sf].y=y-1;
m[x][y-1]=m[x][y]+1;
}
if(m[x+1][y+1]==0)
{
sf++;
coada[sf].x=x+1;
coada[sf].y=y+1;
m[x+1][y+1]=m[x][y]+1;
}
if(m[x+1][y-1]==0)
{
sf++;
coada[sf].x=x+1;
coada[sf].y=y-1;
m[x+1][y-1]=m[x][y]+1;
}
if(m[x-1][y-1]==0)
{
sf++;
coada[sf].x=x-1;
coada[sf].y=y-1;
m[x-1][y-1]=m[x][y]+1;
}
if(m[x-1][y+1]==0)
{
sf++;
coada[sf].x=x-1;
coada[sf].y=y+1;
m[x-1][y+1]=m[x][y]+1;
}
inc++;
}
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
int n,m,m1[101][101],m2[101][101];
char c;
scanf("%d%d",&n,&m);
scanf("%c",&c);
int i,j;
coord poz1,poz2;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%c",&c);
if(c=='R') { m1[i][j]=1;poz1.x=i; poz1.y=j;}
else if(c=='J') { m2[i][j]=1; poz2.x=i; poz2.y=j; }
else if(c=='X') m1[i][j]=m2[i][j]=-1;
else if(c==' ') m1[i][j]=m2[i][j]=0;
}
scanf("%c",&c);
}
bordare(m1,n,m);
bordare(m2,n,m);
lee(m1,poz1);
lee(m2,poz2);
int x1=0,y1=0,tmin=INT_MAX;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(m1[i][j]==m2[i][j]&&m1[i][j]!=0&&m1[i][j]!=-1)
{
if(m1[i][j]<tmin)
{
tmin=m1[i][j];
x1=i;
y1=j;
}
}
printf("%d %d %d\n",tmin,x1,y1);
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
printf("%d ",m1[i][j]);
printf("\n");}
printf("\n");
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
printf("%d ",m2[i][j]);
printf("\n");}
return 0;
}