Pagini recente » Cod sursa (job #1128698) | Cod sursa (job #1640218) | Cod sursa (job #1818478) | Cod sursa (job #2007603) | Cod sursa (job #185525)
Cod sursa(job #185525)
#include <stdio.h>
#define Nmax 101
int a[Nmax][Nmax];
int n,m;
int rx,ry,jx,jy;
const int lin[]={0,1,0,-1,-1,1,-1,1};
const int col[]={1,0,-1,0,-1,1,1,-1};
struct pnct{int a,b;};
pnct v[Nmax*4];
void read()
{
char ch;
freopen("rj.in", "r",stdin);
freopen("rj.out", "w",stdout);
scanf("%d%d\n",&n,&m);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
scanf("%c", &ch);
a[i][j]=Nmax;
if(ch=='X')
a[i][j]=-1;
if(ch=='R')
{
rx=i;
ry=j;
}
if(ch=='J')
{
jx=i;
jy=j;
}
}
scanf("%c", &ch);
}
}
void lee(int x,int y)
{
for(int t=0;t<7;t++)
if((a[x+lin[t]][y+col[t]]>a[x][y]+1))
{
a[x+lin[t]][y+col[t]]=a[x][y]+1;
v[++v[0].a].a=x+lin[t];
v[v[0].a].b=y+col[t];
}
}
void solve()
{
a[rx][ry]=0;
v[++v[0].a].a=rx;
v[v[0].a].b=ry;
for(int i=1;i<=v[0].a;i++)
lee(v[i].a,v[i].b);
int x=jx;
int y=jy;
v[0].a=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
printf("%d ",a[i][j]);
printf("\n");
}
printf("%d %d\n",x,y);
while(x!=rx && y!=ry)
{
for(int t=0;t<7;t++)
if((a[x+lin[t]][y+col[t]]+1==a[x][y]))
{
x=x+lin[t];
y=y+col[t];
v[++v[0].a].a=x;
v[v[0].a].b=y;
break;
}
printf("%d %d\n",x,y);
}
printf("%d %d %d",(v[0].a+2)/2,v[ (v[0].a+1)/2 ].a,v[ (v[0].a+1)/2 ].b);
}
int main()
{
read();
solve();
return 0;
}