Pagini recente » Cod sursa (job #2330155) | Cod sursa (job #1919457) | Cod sursa (job #3128492) | Cod sursa (job #845810) | Cod sursa (job #1201373)
#include <iostream>
#include <cstdio>
#include <queue>
#define VM 102
#define x first
#define y second
using namespace std;
int rm[VM][VM], jm[VM][VM];
int n, m, poz, x1, y1, x2, y2;
int TimpMinim = 10000000, Linie, Coloana;
int dx[]={-1,-1,-1,0,0,1,1,1};
int dy[]={-1,0,1,1,-1,-1,0,1};
bool EInMatrice(int x, int y)
{
return (x >= 1 && x <= n && y >= 1 && y <= m);
}
void Citire(){
freopen("rj.in","rt",stdin);
freopen("rj.out","wt",stdout);
cin>>n;
cin>>m;
for(int i = 1 ; i <= n ; ++i)
for(int j = 1 ; j <= m ; ++j)
{
cin>>poz;
if(poz=='X')
rm[i][j]=jm[i][j]=-1;
if(poz=='R')
x1=i; y1=j;
if(poz=='J')
x2=i; y2=j;
}
}
void ParcugereMatrice(int x, int y, int matrice[VM][VM]){
queue<pair<int,int> > c;
rm[x][y]=1;
while(!c.empty()){
pair<int,int> auxiliara = c.front();
c.pop();
for(int i = 0 ; i < 8 ; ++i){
int dl = auxiliara.x + dx[i];
int dc = auxiliara.y + dy[i];
if(EInMatrice(dl , dc) && matrice[dl][dc] == 0){
matrice[dl][dc] = matrice[auxiliara.x][auxiliara.y]+1;
c.push(make_pair(dl,dc));
}
}
}
}
int i,j;
bool IntalnireTMIN(){
if(rm[i][j] == jm[i][j] && rm[i][j] > 0 && jm[i][j] < TimpMinim)
return true;
return false;
}
void DrumParcurs(){
for(i = 1 ; i <= n ; ++i)
for(j = 1 ; j <= m ; ++j)
if(IntalnireTMIN){
TimpMinim = rm[i][j];
Linie = i;
Coloana = j;
}
}
int main()
{
Citire();
ParcugereMatrice(x1 , y1 , rm);
ParcugereMatrice(x2 , y2 , jm);
DrumParcurs();
cout<<TimpMinim<<" "<<Linie<<" "<<Coloana;
return 0;
}