Pagini recente » Cod sursa (job #1325847) | Cod sursa (job #461438) | Cod sursa (job #1765360) | Cod sursa (job #2413673) | Cod sursa (job #1082064)
#include <iostream>
#include <fstream>
#include <queue>
#include <iomanip>
using namespace std;
#define MAX 102
ifstream fin("rj.in");
ofstream fout("rj.out");
int r[MAX][MAX],ju[MAX][MAX];
queue < pair < int,int > > coada;
void lee(int a[][MAX])
{
int i,j;
while(!coada.empty()){
i=coada.front().first;
j=coada.front().second;
coada.pop();
if(!a[i-1][j-1]){
a[i-1][j-1]=a[i][j]+1;
coada.push(make_pair(i-1,j-1));
}
if(!a[i-1][j]){
a[i-1][j]=a[i][j]+1;
coada.push(make_pair(i-1,j));
}
if(!a[i-1][j+1]){
a[i-1][j+1]=a[i][j]+1;
coada.push(make_pair(i-1,j+1));
}
if(!a[i][j+1]){
a[i][j+1]=a[i][j]+1;
coada.push(make_pair(i,j+1));
}
if(!a[i][j-1]){
a[i][j-1]=a[i][j]+1;
coada.push(make_pair(i,j-1));
}
if(!a[i+1][j-1]){
a[i+1][j-1]=a[i][j]+1;
coada.push(make_pair(i+1,j-1));
}
if(!a[i+1][j]){
a[i+1][j]=a[i][j]+1;
coada.push(make_pair(i+1,j));
}
if(!a[i+1][j+1]){
a[i+1][j+1]=a[i][j]+1;
coada.push(make_pair(i+1,j+1));
}
}
}
int main()
{
int n,m,i,j,x1,j1,x2,j2,x;
fin>>n>>m;
char s;
fin.get(s);
for(i=1;i<=n;i++)
for(j=1;j<=m+1;j++){
fin.get(s);
if(s=='\n'){
break;
}
if(s=='X')
r[i][j]=ju[i][j]=-1;
if(s=='R'){
x1=i;
j1=j;
}
if(s=='J'){
x2=i;
j2=j;
}
}
for(i=0;i<=n+1;i++){
r[i][0]=-1;
r[i][m+1]=-1;
ju[i][0]=-1;
ju[i][m+1]=-1;
}
for(i=0;i<=m+1;i++){
r[0][i]=-1;
r[n+1][i]=-1;
ju[0][i]=-1;
ju[n+1][i]=-1;
}
coada.push(make_pair(x1,j1));
r[x1][j1]=1;
lee(r);
coada.push(make_pair(x2,j2));
ju[x2][j2]=1;
lee(ju);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(r[i][j]==ju[i][j]&&r[i][j]>0&&ju[i][j]>0)
fout<<r[i][j]<<" "<<i<<" "<<j<<"\n";
return 0;
}