Pagini recente » Cod sursa (job #1551667) | Cod sursa (job #1112255) | Cod sursa (job #1971709) | Cod sursa (job #73134) | Cod sursa (job #2952771)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, oras[101][101], mat1[101][101], mat2[101][101], tmin=1e9, x, y;
char s[101];
bool ok;
const int di[]={-1, -1, -1, 0, 1, 1, 1, 0}, dj[]={-1, 0, 1, 1, 1, 0, -1, -1};
void lee(int istart, int jstart, int mat[101][101]){
queue < pair<int, int> > q;
q.push(make_pair(istart, jstart));
mat[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 && oras[iv][jv]==0 && mat[iv][jv]==0){
mat[iv][jv]=mat[i][j]+1;
q.push(make_pair(iv, jv));
}
}
q.pop();
}
}
int main(){
fin>>n>>m;
fin.get();
for(int i=1; i<=n; i++){
fin.getline(s, sizeof(s));
for(int j=0; j<m; j++){
if(s[j]=='R')
oras[i][j+1]=1;
if(s[j]=='J')
oras[i][j+1]=1;
if(s[j]=='X')
oras[i][j+1]=-1;
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
if(oras[i][j]==1 && !ok){
lee(i, j, mat1);
ok=1;
}else if(oras[i][j]==1){
lee(i, j, mat2);
}
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
if(mat1[i][j]==mat2[i][j] && mat1[i][j]){
if(mat1[i][j] < tmin){
tmin=mat1[i][j];
x=i;
y=j;
}
}
}
}
fout<<tmin<<" "<<x<<" "<<y;
}