Pagini recente » Cod sursa (job #50061) | Cod sursa (job #919022) | Cod sursa (job #388309) | Cod sursa (job #2990674) | Cod sursa (job #2561781)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int n,m; char s[105];
int di[8]={-1,-1, 0, 1, 1, 1, 0,-1};
int dj[8]={0, 1, 1, 1, 0,-1,-1,-1};
int matr[105][105],matj[105][105];
queue< pair<int, int> >coadar;
queue< pair<int, int> >coadaj;
bool ok(int ii,int jj)
{
if(ii<1 or jj<1 or ii>n or jj>m)return false;
return true;
}
void lee(int mat[105][105],queue<pair<int,int> >coada)
{
while(!coada.empty())
{int ii,jj;
ii=coada.front().first;
jj=coada.front().second;
coada.pop();
for(int dir=0;dir<8;dir++)
{
int i_urm,j_urm;
i_urm=ii+di[dir];
j_urm=jj+dj[dir];
if(ok(i_urm,j_urm)and mat[i_urm][j_urm]==0)
{
mat[i_urm][j_urm]=mat[ii][jj]+1;
coada.push(make_pair(i_urm,j_urm));
}
}
}
}
int main()
{
in>>n>>m;
in.get();
for(int i=1;i<=n+1;i++)
{
in.getline(s,m+1);
for(int j=0;j<m;j++)
{
if(s[j]=='X'){matr[i][j+1]=-1;matj[i][j+1]=-1;}
else if(s[j]=='R'){coadar.push(make_pair(i,j+1));matr[i][j+1]=1;}
else if(s[j]=='J'){coadaj.push(make_pair(i,j+1));matj[i][j+1]=1;}
}
}
lee(matr,coadar);
lee(matj,coadaj);
int tmin=9999,istop,jstop;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(matr[i][j]==matj[i][j] and matr[i][j]<tmin and matj[i][j]>0)
{
tmin=matr[i][j];
istop=i;jstop=j;
}
out<<tmin<<" "<<istop<<" "<<jstop;
}