Pagini recente » Cod sursa (job #550545) | Cod sursa (job #3003633) | Cod sursa (job #3262699) | Cod sursa (job #601336) | Cod sursa (job #2668556)
#include<bits/stdc++.h>
#define N 102
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int romeo[N][N], julieta[N][N],n,m;
queue<pair<int, int>> q;
int x[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
int y[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
void bfs(int mat[102][102], int start_x, int start_y){
int i, next_x, next_y, curr_x, curr_y;
q.push({start_x, start_y});
while(!q.empty()){
curr_x = q.front().first;
curr_y = q.front().second;
q.pop();
for(i=0;i<8;i++){
next_x = curr_x + x[i];
next_y = curr_y + y[i];
if(next_x >= 1 && next_x <= n && next_y >= 1 && next_y <= m){
if(!mat[next_x][next_y]){
mat[next_x][next_y] = mat[curr_x][curr_y] + 1;
q.push({next_x, next_y});
}
}
}
}
}
int main()
{
int i,j,rx,ry,jx,jy;
char s[101];
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++){
fin.getline(s, 101);
for(j=0;j<m;j++){
if(s[j] == 'R'){
romeo[i][j+1] = 1;
rx = i;
ry = j+1;
}
else if(s[j] == 'J'){
julieta[i][j+1] = 1;
jx = i;
jy = j+1;
}
else if(s[j] == 'X'){
romeo[i][j+1] = -1;
julieta[i][j+1] = -1;
}
}
}
bfs(romeo, rx, ry);
bfs(julieta, jx, jy);
int ans = 100, meeting_x, meeting_y;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(romeo[i][j] == julieta[i][j] && romeo[i][j] < ans && romeo[i][j] > 0){
ans = romeo[i][j];
meeting_x = i;
meeting_y = j;
}
}
}
fout<<ans<<" "<<meeting_x<<" "<<meeting_y;
return 0;
}