Pagini recente » Cod sursa (job #2162369) | Cod sursa (job #804878)
Cod sursa(job #804878)
#include <iostream>
#include <fstream>
#include <climits>
#include <iomanip>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,a[101][101]={0},b[101][101]={0};
const int di[8]={1,1,1,0,0,-1,-1,-1},
dj[8]={1,0,-1,1,-1,1,0,-1};
int ir,jr,ij,jj;
void citire()
{
fin>>n>>m;
char c;
fin.get();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
fin.get(c);
if(c=='X')
{
a[i][j]=b[i][j]=-1;
}
if(c=='R')
{
ir=i;jr=j;a[i][j]=1;
}
if(c=='J')
{
ij=i;jj=j;b[i][j]=1;
}
if(c=='\n')
j--;
}
}
}
void Lee(int a[101][101],int ii,int ij)
{
unsigned char l[10000],c[10000];
int dr=0,st=0;
l[dr]=ii;c[dr]=ij;dr++;
while(st<dr)
{
int i=l[st],j=c[st];
for(int k=0;k<8;k++)
{
int ii=i+di[k],jj=j+dj[k];
if(ii>0 && ii<=n+1 && jj>0 && jj<=m+1 && a[ii][jj]==0)
{
a[ii][jj]=a[i][j]+1;
l[dr]=ii;c[dr]=jj;dr++;
}
}
st++;
}
}
int main()
{
citire();
Lee(a,ir,jr);
Lee(b,ij,jj);
int vmin=INT_MAX;
int ii=0,jj=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<vmin)
{
vmin=a[i][j];ii=i;jj=j;
}
}
}
fout<<vmin<<" "<<ii<<" "<<jj;
return 0;
}