Pagini recente » Cod sursa (job #2436872) | Cod sursa (job #3279600) | Cod sursa (job #1949244) | Cod sursa (job #573026) | Cod sursa (job #1735699)
#include <fstream>
#include <queue>
#define f first
#define s second
#define DIM 105
using namespace std;
char s[DIM][DIM];
int n,m,rm[DIM][DIM],jl[DIM][DIM];
bool isOK(pair<int,int> p) {
return (p.f>=1&&p.f<=n&&p.s>=1&&p.s<=m&&s[p.f][p.s]!='X');
}
void bfs(int mt[DIM][DIM],pair<int,int> p) {
pair<int,int> pN,d[]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
queue<pair<int,int> > q;
q.push(p);
mt[p.f][p.s]=1;
while(!q.empty()) {
p=q.front();
q.pop();
for(int i=0;i<8;i++) {
pN={p.f+d[i].f,p.s+d[i].s};
if(isOK(pN)&&!mt[pN.f][pN.s]) {
q.push(pN);
mt[pN.f][pN.s]=mt[p.f][p.s]+1;
}
}
}
}
int main()
{
ifstream fin("rj.in");
ofstream fout("rj.out");
fin>>n>>m;
fin.getline(s[0],DIM);
for(int i=1;i<=n;i++)
fin.getline(s[i]+1,DIM);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) {
if(s[i][j]=='R')
bfs(rm,{i,j});
else if(s[i][j]=='J')
bfs(jl,{i,j});
}
int mn=100000;
pair<int,int> p;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) {
if(rm[i][j]&&rm[i][j]==jl[i][j]&&rm[i][j]<mn) {
p={i,j};
mn=rm[i][j];
}
}
fout<<mn<<" "<<p.f<<" "<<p.s;
return 0;
}