Pagini recente » Cod sursa (job #3033169) | Cod sursa (job #231033) | Cod sursa (job #2210197) | Cod sursa (job #2459941) | Cod sursa (job #432317)
Cod sursa(job #432317)
#include<stdio.h>
#include<string.h>
int n,m,d[3][101][101],in,sf;
char viz[101][101],v[101][101];
int smin=1000001;
struct cord
{
int x,y;
};
cord q[10001],p,p1,p2;
int oyv(int val)
{
if(val>=1 && val<=m)
return 1;
return 0;
}
int oxv(int val)
{
if(val>=1 && val<=n)
return 1;
return 0;
}
void actual (int s1,int s2,int per)
{
int poz1,poz2;
poz1=q[in].x;
poz2=q[in].y;
if(!v[poz1+s1][poz2+s2] && !viz[poz1+s1][poz2+s2] && oxv(poz1+s1) && oyv(poz2+s2))
{
viz[poz1+s1][poz2+s2]=1;
d[per][poz1+s1][poz2+s2]=d[per][poz1][poz2]+1;
q[++sf].x=poz1+s1;
q[sf].y=poz2+s2;
}
}
int main ()
{
int i,j;
char c[105],car;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;i++)
{
for(j=0;j<m;j++)
{
scanf("%c",&car);
if(c[j]==' ')
v[i][j+1]=1;
if(c[j]=='R')
{
p1.x=i;
p1.y=j+1;
} //if c
if(c[j]=='J')
{
p2.x=i;
p2.y=j+1;
}
} //for
scanf("\n");
} //for
q[1].x=p1.x;
q[1].y=p1.y;
viz[p1.x][p1.y]=1;
in=1;sf=1;
while(in<=sf)
{
actual(-1,0,1);
actual(0,-1,1);
actual(1,0,1);
actual(0,1,1);
in++;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
viz[i][j]=0;
q[1].x=p2.x;
q[1].y=p2.y;
in=1;sf=1;
viz[p2.x][p2.y]=1;
while(in<=sf)
{
actual(-1,0,2);
actual(0,-1,2);
actual(1,0,2);
actual(0,1,2);
in++;
}
for(i=1;i<=j;i++)
for(j=1;j<=m;j++)
if(d[1][i][j]==d[2][i][j] && d[1][i][j]!=0 && d[2][i][j]<smin)
{
smin=d[1][i][j];
p.x=i;
p.y=j;
}
printf("%d %d %d\n",smin,p.x,p.y);
return 0;
}