Pagini recente » Cod sursa (job #658070) | Cod sursa (job #2194642) | Cod sursa (job #2320212) | Cod sursa (job #2399987) | Cod sursa (job #2951901)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int xi[8]={0,1,0,-1,-1,1,-1,1};
int xj[8]={1,0,-1,0,-1,1,1,-1};
char S[102][102],s;
struct elem
{
int z1,z2;
} C[10005],k;
int n,m,V[102][102],R[102][102],i,sol,xmin,ymin,x1,y1,x2,y2,j;
void lee(int x, int y, int a[102][102])
{
int st=0,dr=0,i,j;
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
a[i][j]=-1;
C[0].z1=x;
C[0].z2=y;
a[x][y]=1;
while(st<=dr)
{
k=C[st];
st++;
for(i=0;i<8;i++)
if(S[k.z1+xi[i]][k.z2+xj[i]]==' '&&a[k.z1+xi[i]][k.z2+xj[i]]==-1)
{
a[k.z1+xi[i]][k.z2+xj[i]]=1+a[k.z1][k.z2];
C[++dr].z1=k.z1+xi[i];
C[dr].z2=k.z2+xj[i];
}
}
}
int main()
{
fin>>n>>m;
for(i=0;i<=n+1;i++)
S[i][0]=S[i][m+1]='X';
for(i=0;i<=m+1;i++)
S[0][i]=S[n+1][i]='X';
fin.get(s);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fin.get(s);
S[i][j]=s;
if(S[i][j]=='R')
{
x1=i;
y1=j;
S[i][j]=' ';
}
if(S[i][j]=='J')
{
x2=i;
y2=j;
S[i][j]=' ';
}
}
fin.get(s);
}
lee(x1,y1,V);
lee(x2,y2,R);
sol=102*102+5;
xmin=-1;
ymin=-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(V[i][j]==R[i][j])
if(V[i][j]<sol&&V[i][j]!=-1)
{
sol=V[i][j];
xmin=i;
ymin=j;
}
fout<<sol<<' '<<xmin<<' '<<ymin<<"\n";
return 0;
}