Pagini recente » Cod sursa (job #2509195) | Cod sursa (job #1576172) | Cod sursa (job #1636466) | Cod sursa (job #3183203) | Cod sursa (job #3001050)
#include <fstream>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
struct romeo
{
int l,c;
};
romeo coada[10002];
int R[103][103];
int J[103][103];
int main()
{
int n,m,poz1,inc=1,sf=1,lin,col,mini=102,x1,y1,lr,cr,lj,cj;
cin>>n>>m;
int dirL[8]={-1,-1,0,1,1,1,0,-1},dirC[8]={0,1,1,1,0,-1,-1,-1};
int i,j;
char lit;
cin.get();
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
cin.get(lit);
if(lit=='X')
{
R[i][j]=-1;
J[i][j]=-1;
}
else if(lit=='R')
{
lr=i;
cr=j;
R[i][j]=1;
}
else if(lit=='J')
{
lj=i;
cj=j;
J[i][j]=1;
}
else
{
R[i][j]=0;
J[i][j]=0;
}
if(j==8)
cin.get();
}
}
for(j=0; j<=m+1; j++)
{
R[0][j]=-1;
}
for(j=0; j<=m+1; j++)
{
R[n+1][j]=-1;
}
for(i=0; i<=n+1; i++)
{
R[i][0]=-1;
}
for(i=0; i<=n+1; i++)
{
R[i][m+1]=-1;
}
for(j=0; j<=m+1; j++)
{
J[0][j]=-1;
}
for(j=0; j<=m+1; j++)
{
J[n+1][j]=-1;
}
for(i=0; i<=n+1; i++)
{
J[i][0]=-1;
}
for(i=0; i<=n+1; i++)
{
J[i][m+1]=-1;
}
sf=inc=1;
coada[inc].l=lr;
coada[inc].c=cr;
R[lr][cr]=1;
while(inc<=sf)
{
for(i=0; i<8; i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(R[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
R[lin][col]=R[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
inc=sf=1;
coada[inc].l=lj;
coada[inc].c=cj;
J[lj][cj]=1;
while(inc<=sf)
{
for(i=0; i<8; i++)
{
lin=coada[inc].l+dirL[i];
col=coada[inc].c+dirC[i];
if(J[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
J[lin][col]=J[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(R[i][j]==J[i][j] && R[i][j]!=-1 && R[i][j]!=0)
{
if(R[i][j]<mini)
{
mini=R[i][j];
x1=i;
y1=j;
}
}
}
}
cout<<mini<<" "<<x1<<" "<<y1;
return 0;
}