Pagini recente » Cod sursa (job #326777) | Cod sursa (job #1981682) | Cod sursa (job #3273681) | Cod sursa (job #2678626) | Cod sursa (job #3230177)
#include<fstream>
#include<queue>
using namespace std;
char mat[101][101];
int dis1[101][101];
int dis2[101][101];
int diri[9]={0, -1, -1, 0, +1, +1, +1, 0, -1};
int dirj[9]={0, 0, +1, +1, +1, 0, -1, -1, -1};
struct coord{
int x;
int y;
};
queue<coord> a;
void lee(coord ro,int dis[101][101]){
a.push(ro);
dis1[ro.x][ro.y]=0;
while(!a.empty()){
coord urm=a.front();
a.pop();
for(int dir=1;dir<=8;dir++){
coord next;
next.x=urm.x+diri[dir], next.y=urm.y+dirj[dir];
if(dis[next.x][next.y]==0&&mat[next.x][next.y]==' '){
dis[next.x][next.y]=dis[urm.x][urm.y]+1;
a.push(next);
}
}
}
}
int main(){
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,mini;
char c;
coord ju, ro, finala;
fin>>n>>m;
fin.get(c);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fin.get(mat[i][j]);
if(mat[i][j]=='J') ju.x=i, ju.y=j;
if(mat[i][j]=='R') ro.x=i, ro.y=j;
}
fin.get();
}
lee(ro, dis1);
lee(ju, dis2);
mini=10001;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(dis1[i][j]==dis2[i][j]&&mini>dis1[i][j]&&mat[i][j]==' '&&dis1[i][j]!=0){
mini=dis1[i][j];
finala.x=i, finala.y=j;
}
}
}
fout<<mini+1<<" "<<finala.x<<" "<<finala.y;
}