Pagini recente » Cod sursa (job #2911330) | Cod sursa (job #3294562) | Cod sursa (job #1186764) | Cod sursa (job #341509) | Cod sursa (job #1126249)
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,a[101][101],b[101][101],ii,jj;
int dx[8]={-1,-1,0,1,1,1,0,-1};
int dy[8]={0,1, 1,1,0,-1,-1,-1};
char A[101][101];
void bordare()
{
for(i=0;i<=n+1;++i)
A[i][0]=A[i][m+1]='X';
for(i=1;i<=m;++i)
A[0][i]=A[n+1][i]='X';
}
struct coada
{
int l,c;
} C[100001];
void lee1(int x , int y)
{
int p,u,la,ca,lv,cv;
C[1].l=x;C[1].c=y;
p=1;u=1;
a[x][y]=1;
while(p<=u)
{
la=C[p].l;
ca=C[p].c;
for(int i=0;i<8;++i)
{
lv=la+dx[i];
cv=ca+dy[i];
if(A[lv][cv]==' ' && a[lv][cv]>a[la][ca]+1)
{
++u;
C[u].l=lv; C[u].c=cv;
a[lv][cv]=a[la][ca]+1;
}
}
++p;
}
}
void lee2(int x , int y)
{
int p,u,la,ca,lv,cv;
C[1].l=x;C[1].c=y;
p=1;u=1;
b[x][y]=1;
while(p<=u)
{
la=C[p].l;
ca=C[p].c;
for(int i=0;i<8;++i)
{
lv=la+dx[i];
cv=ca+dy[i];
if(A[lv][cv]==' ' && b[lv][cv]>b[la][ca]+1)
{
++u;
C[u].l=lv; C[u].c=cv;
b[lv][cv]=b[la][ca]+1;
}
}
++p;
}
}
int main ()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j) fin.get(A[i][j]),a[i][j]=1000000,b[i][j]=1000000;
fin.get();
}
void bordare();
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(A[i][j]=='R') lee1(i,j);
else
if(A[i][j]=='J') lee2(i,j);
int Min=1000000;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
if(a[i][j]==b[i][j]&& Min>a[i][j])
{
Min=a[i][j];
ii=i;
jj=j;
}
}
fout<<Min<<' '<<ii<<' '<<jj;
return 0;
}