Pagini recente » Cod sursa (job #376500) | Cod sursa (job #1517914) | Cod sursa (job #1854814) | Cod sursa (job #1223713) | Cod sursa (job #131723)
Cod sursa(job #131723)
#include<stdio.h>
int ro[105][105],ju[105][105];
struct coditza {char i,j;};
coditza q[10000];
int main()
{
int pq,uq,n,i,j,m,ir,jr,ij,jj,nr;
char wtf[500];
freopen("rj.in","r",stdin);
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;i++)
{
gets(wtf);
for(j=1;j<=m;j++)
{
if(wtf[j-1]=='X') ro[i][j]=ju[i][j]=-1;
else
{
ro[i][j]=ju[i][j]=0;
if(wtf[j-1]=='R') ir=i,jr=j;
else if(wtf[j-1]=='J') ij=i,jj=j;
}
}
}
fclose(stdin);
q[pq=uq=0].i=ir,q[pq].j=jr;
ro[ir][jr]=1;
int di,dj;
while(pq<=uq)
{
i=q[pq].i;j=q[pq++].j;
nr=ro[i][j];nr++;
for(di=-1;di<=1;di++)
for(dj=-1;dj<=1;dj++)
if((di!=0||dj!=0)
&&i+di>=1&&i+di<=n&&
j+dj>=1&&j+dj<=m&&ro[i+di][j+dj]==0)
{
ro[i+di][j+dj]=nr;
q[++uq].i=i+di;q[uq].j=j+dj;
}
}
q[pq=uq=0].i=ij,q[pq].j=jj;
ju[ij][jj]=1;
while(pq<=uq)
{
i=q[pq].i;j=q[pq++].j;
nr=ju[i][j];nr++;
for(di=-1;di<=1;di++)
for(dj=-1;dj<=1;dj++)
if((di!=0||dj!=0)
&&i+di>=1&&i+di<=n&&
j+dj>=1&&j+dj<=m&&ju[i+di][j+dj]==0)
{
ju[i+di][j+dj]=nr;
q[++uq].i=i+di;q[uq].j=j+dj;
}
}
int min=10001,imin,jmin;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(ro[i][j]==ju[i][j]&&ro[i][j]>0)
if(ro[i][j]<min)
min=ro[imin=i][jmin=j];
freopen("rj.out","w",stdout);
printf("%d %d %d\n",min,imin,jmin);
fclose(stdout);
return 0;
}