Pagini recente » Cod sursa (job #391320) | Cod sursa (job #1814769) | Cod sursa (job #2655146) | Cod sursa (job #1255803) | Cod sursa (job #355753)
Cod sursa(job #355753)
#include <stdio.h>
int n,m,i,k,cs,ci,e,f,loc,ln,cn,r[102][102],j[102][102];
int dx[] = { -1, 0, 1, 0, -1, 1, 1, -1 };
int dy[] = { 0, 1, 0,-1, 1, 1, -1, -1 };
char c[101];
struct romeo {int lin; int col; int d;};
romeo rom[10005];
struct julieta {int lin; int col; int d;};
julieta jul[10005];
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d %d",&n,&m);
gets(c);
for (i=1; i<=n; ++i)
{ gets(c);
for(k=1; k<=m; k++)
{
if(c[k-1]=='X')
{
r[i][k]=-1;
j[i][k]=-1;
}
if(c[k-1]=='R')
{
rom[0].lin=i;
rom[0].col=k;
rom[0].d=1;
r[i][k]=1;
}
if(c[k-1]=='J')
{
jul[0].lin=i;
jul[0].col=k;
jul[0].d=1;
j[i][k]=1;
}
}
}
for(i=0; i<=n+1; ++i)
for(k=0; k<=m+1; ++k)
if((i==0)||(i==n+1)||(k==0)||(k==m+1)) r[i][k]=j[i][k]=-1;
while(cs<=ci)
{
for(k=0;k<8;k++)
{
ln=rom[cs].lin+dx[k];
cn=rom[cs].col+dy[k];
if(r[ln][cn]==0)
{
ci++;
rom[ci].lin = ln;
rom[ci].col = cn;
rom[ci].d = rom[cs].d+1;
r[ln][cn]=rom[ci].d;
}
}
cs++;
}
cs=0;
ci=0;
while(cs<=ci)
{
for(k=0;k<8;k++)
{
ln=jul[cs].lin+dx[k];
cn=jul[cs].col+dy[k];
if(j[ln][cn]==0)
{
ci++;
jul[ci].lin = ln;
jul[ci].col = cn;
jul[ci].d = jul[cs].d+1;
j[ln][cn]=jul[ci].d;
}
}
cs++;
}
loc=10001;
for(i=1; i<=n; ++i)
for(k=1; k<=m; ++k)
if((r[i][k]!=0)&&(j[i][k]!=0)&&(r[i][k]!=-1)&&(j[i][k]!=-1)&&(r[i][k]==j[i][k])&&(r[i][k]<loc))
{
loc=r[i][k];
e=i;
f=k;
}
printf("%d %d %d",loc,e,f);
}