Pagini recente » Cod sursa (job #278221) | Cod sursa (job #1779861) | Cod sursa (job #2294523) | Cod sursa (job #851235) | Cod sursa (job #801156)
Cod sursa(job #801156)
#include <fstream>
#include <iostream>
#include <climits>
using namespace std;
ifstream fin ("rj.in");
ofstream fout("rj.out");
int n,m,a[101][101],b[101][101];
int ir,jr,ij,jj;
const int di[8]={1,1,1,0,0,-1,-1,-1},
dj[8]={1,0,-1,1,-1,1,0,-1};
void citire(){
fin >> n >> m;
fin.get();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
char c;
c = fin.get();
if(c=='X')
b[i][j]=a[i][j]=-1;
if(c=='R')
ir = i, jr = j;
if(c=='J')
ij = i, jj = j;
}
fin.get();
}
/*
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j)
cout << -a[i][j] << " ";
cout << endl;
}
*/
}
void Lee(int a[101][101], int ii,int ji){
unsigned char l[10005],c[10005];
int st=1, dr=0;
a[ii][ji] = 1;
dr ++;
l[dr] = ii, c[dr] = ji;
while(st<=dr){
int i = l[st], j=c[st];
for(int k=0; k<8 ; ++k){
int i1,j1;
i1 = i+di[k], j1=j+dj[k];
if(i1>0 && i1<n+1 && j1>0 && j1<m+1 && a[i1][j1]==0){
a[i1][j1]=a[i][j]+1;
dr++;
l[dr]=i1, c[dr]=j1;
}
}
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)
if(vmin > a[i][j])
vmin = a[i][j], ii = i, jj = j;
for(int i=1;i<=n && !ii;++i)
for(int j=1; j<=m && !jj; ++j)
if(a[i][j]==vmin)
;
fout << vmin << " " << ii << " " << jj << "\n";
return 0;
}