Pagini recente » Cod sursa (job #2361201) | Cod sursa (job #2286486) | Cod sursa (job #270148) | Borderou de evaluare (job #2912087) | Cod sursa (job #3184646)
#include <iostream>
#include <queue>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,a[105][105],b[105][105];
char c[105];
int di[]= {1,1,0,-1,-1,-1,0,1};
int dj[]= {0,1,1,1,0,-1,-1,-1};
void Lee(int istart,int jstart, int A[105][105])
{
queue<pair<int,int> > Q;
Q.push(make_pair(istart, jstart));
A[istart][jstart] = 1;
while(! Q.empty())
{
int i=Q.front().first,j=Q.front().second;
for(int k=0; k<8; k++)
{
int iv=i+di[k],jv=j+dj[k];
if(iv>=1 && iv<=n && jv>=1 && jv<=m && A[iv][jv]==0)
{
A[iv][jv]=A[i][j]+1;
Q.push(make_pair(iv,jv));
}
}
Q.pop();
}
}
int main()
{
fin>>n>>m;
int ir,jr,ij,jj;
fin.get();
int cnt=0;
for(int i=1; i<=n; i++)
{
fin.getline(c,105);
cnt=0;
for(int j=1; j<=m; j++)
{
if(c[cnt]=='X') a[i][j]=-1,b[i][j]=-1;
else if(c[cnt]=='R') ir=i,jr=j,a[i][j]=2;
else if(c[cnt]=='J') ij=i,jj=j,a[i][j]=3;
cnt++;
}
}
Lee(ir,jr,a);
Lee(ij,jj,b);
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)
{fout<<a[i][j]<<" "<<i<<" "<<j;
return 0;
}
return 0;
}