Pagini recente » Cod sursa (job #1553262) | Cod sursa (job #2813133) | Cod sursa (job #2404727) | Cod sursa (job #3518) | Cod sursa (job #131685)
Cod sursa(job #131685)
#include<stdio.h>
int ro[101][101],ju[101][101];
struct {char i,j;} q[5001];
int main()
{
int pq,uq,n,i,j,m,ir,jr,ij,jj,nr;
char c;
freopen("rj.in","r",stdin);
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
scanf("%c",&c);
if(c=='X') ro[i][j]=ju[i][j]=-1;
else
{
ro[i][j]=ju[i][j]=0;
if(c=='R') ir=i,jr=j;
else if(c=='J') ij=i,jj=j;
}
}
scanf("%c",&c);
}
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;
}