Pagini recente » Cod sursa (job #2977456) | Cod sursa (job #3004841) | Cod sursa (job #955164) | Cod sursa (job #1653424) | Cod sursa (job #3240678)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int dl[]= {1,-1,0,0,1,-1,-1,1};
const int dc[]= {0,0,1,-1,1,-1,1,-1};
int n,m,v[103][103],d[103][103],xi,yi,xs,ys,minim=11000,xq,yq;
char c;
bool verificare(int i,int j) {
return 1<=i&&i<=n&&1<=j&&j<=m;
}
void Lee(int xince,int yince,int vec[103][103]) {
queue<pair<int,int>> q;
q.push(make_pair(xince,yince));
vec[xince][yince]=1;
while(!q.empty()) {
int i=q.front().first;
int j=q.front().second;
for(int k=0; k<8; k++) {
int iv=i+dl[k];
int jv=j+dc[k];
if(verificare(iv,jv)&&vec[iv][jv]==0) {
vec[iv][jv]=1+vec[i][j];
q.push(make_pair(iv,jv));
}
}
q.pop();
}
}
int main() {
f>>n>>m;
f.get();
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
f.get(c);
if(c!=' ') {
v[i][j]=1;
d[i][j]=1;
if(c=='R') {
xi=i;
yi=j;
v[i][j]=0;
d[i][j]=0;
}
if(c=='J') {
xs=i;
ys=j;
v[i][j]=0;
d[i][j]=0;
}
}
}
f.get();
}
Lee(xi,yi,v);
Lee(xs,ys,d);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(v[i][j]==d[i][j]){
if(v[i][j]!=1&&v[i][j]!=0&&v[i][j]<minim){
minim=v[i][j];
xq=i;
yq=j;
}
}
}
}
g<<minim<<" "<<xq<<" "<<yq<<" ";
f.close();
g.close();
return 0;
}