Pagini recente » Cod sursa (job #1111917) | Cod sursa (job #2127568) | Cod sursa (job #2889238) | Cod sursa (job #1258382) | Cod sursa (job #2952633)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, oras[101][101], tmin;
char s[101];
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){
queue < pair<int, int> > q;
q.push(make_pair(istart, jstart));
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){
oras[iv][jv]=oras[i][j]+1;
q.push(make_pair(iv, jv));
}
if(oras[iv][jv]==1 && (iv!=istart && jv!=jstart)){
oras[iv][jv]=oras[i][j]+1;
tmin=oras[iv][jv]/2+1;
}
}
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){
lee(i, j);
}
}
}
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
if(oras[i][j]==tmin){
fout<<tmin<<" "<<i<<" "<<j;
}
}
}
}