Pagini recente » Cod sursa (job #975411) | Cod sursa (job #3212084) | Cod sursa (job #2579536) | Cod sursa (job #3244509) | Cod sursa (job #1835533)
#include <iostream>
#include <cstring>
#include <cctype>
#include <fstream>
#include <queue>
#include <utility>
#include <climits>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
char h[105][105];
int vizitat[105][105];
void lee(int x, int y, int a[105][105],int en, int em){
int i,j,i_urmator,j_urmator;
for(i=1;i<=en;i++)
for(j=1;j<=em;j++)
vizitat[i][j]=0;
queue<pair<int,int>> q;
q.push(make_pair(x,y));
vizitat[x][y]=1;
a[x][y]=0;
while(q.size()!=0){
i=q.front().first;
j=q.front().second;
q.pop();
for(int dir=0;dir<4;dir++){
i_urmator=i+dx[dir];
j_urmator=j+dy[dir];
if(i_urmator>0 && i_urmator<en+1 && j_urmator>0 && j_urmator<em+1 && vizitat[i_urmator][j_urmator]!=1 && h[i_urmator][j_urmator]!='X'){
vizitat[i_urmator][j_urmator]=1;
a[i_urmator][j_urmator]=a[i][j]+1;
q.push(make_pair(i_urmator,j_urmator));
}
}
}
}
int romeo[105][105],julieta[105][105];
int main(){
int i,j,n,m,x1,y1,x2,y2,linie=INT_MAX,coloana=INT_MAX,intalnire=INT_MAX;
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
fin.getline(h[i]+1,105);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(h[i][j]=='R'){
x1=i;
y1=j;
}
if(h[i][j]=='J'){
x2=i;
y2=j;
}
}
}
lee(x1,y1,romeo,n,m);
lee(x2,y2,julieta,n,m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(romeo[i][j]==julieta[i][j] && h[i][j]==' '){
if(intalnire>romeo[i][j]){
intalnire=romeo[i][j];
linie=i;
coloana=j;
}
}
fout<<intalnire<<" "<<linie<<" "<<coloana;
return 0;
}