Pagini recente » Cod sursa (job #1808317) | Cod sursa (job #381620) | Cod sursa (job #170459) | Cod sursa (job #105630) | Cod sursa (job #2951097)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int i, j, n, m, st, dr, minim, mini, minj, inou, jnou, icurr, jcurr, i1, j1, i2, j2, k;
int R[102][102], J[102][102];
pair <int, int> a[10002];
int di[] = { 1, 1, 1,-1,-1,-1, 0, 0};
int dj[] = { 0, 1,-1, 0, 1,-1, 1,-1};
char s[105];
bool inmat(int i, int j){
if(i>=1 && i<=n && j>=1 && j<=m)
return 1;
return 0;
}
int main() {
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++){
fin.getline(s+1, 105);
for(j=1;j<=m;j++){
if(s[j]=='X')
R[i][j]=-1, J[i][j]=-1;
else
R[i][j]=0, J[i][j]=0;
if(s[j]=='R')
i1=i, j1=j;
if(s[j]=='J')
i2=i, j2=j;
}
}
st=1;
dr=1;
a[st].first=i1;
a[st].second=j1;
R[i1][j1]=1;
while(st<=dr){
icurr=a[st].first;
jcurr=a[st].second;
st++;
for(k=0;k<8;k++){
inou=di[k]+icurr;
jnou=dj[k]+jcurr;
///fout<<inou<<" "<<jnou<<" "<<R[inou][jnou]<<"\n";
if(R[inou][jnou]==0 && inmat(inou, jnou)){
dr++;
a[dr].first=inou;
a[dr].second=jnou;
R[inou][jnou]=R[icurr][jcurr]+1;
}
}
}
st=1;
dr=1;
a[st].first=i2;
a[st].second=j2;
J[i2][j2]=1;
while(st<=dr){
icurr=a[st].first;
jcurr=a[st].second;
st++;
for(k=0;k<8;k++){
inou=di[k]+icurr;
jnou=dj[k]+jcurr;
if(J[inou][jnou]==0 && inmat(inou, jnou)){
dr++;
a[dr].first=inou;
a[dr].second=jnou;
J[inou][jnou]=J[icurr][jcurr]+1;
}
}
}
minim=10002;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
///fout<<R[i][j]<<" "<<i<<" "<<j<<"\n";
if(R[i][j]>0 && R[i][j]==J[i][j] && J[i][j]<minim){
minim=R[i][j];
mini=i;
minj=j;
}
}
}
fout<<minim<<" "<<minim<<" "<<minj;
}