Pagini recente » Cod sursa (job #1102492) | Cod sursa (job #906636) | Cod sursa (job #718311) | Cod sursa (job #1246747) | Cod sursa (job #2719546)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,ar[100][100],aj[100][100];
struct cord
{
int x=-1,y;
}cr[101],cj[101];
void citire()
{
char x[100];
fin.getline(x,0);
for(int i=0;i<n;i++)
{
fin.getline(x,101);
for(int j=0;j<m;j++)
{
if(x[j]=='X') ar[i][j]=aj[i][j]=-1;
if(x[j]=='R') cr[1].x=i,cr[1].y=j,ar[i][j]=1;
if(x[j]=='J') cj[1].x=i,cj[1].y=j,aj[i][j]=1;
}
}
}
void el(cord v[],int &n)
{
int i;
for(i=1,n--;i<=n;i++) v[i]=v[i+1];
}
void Lee()
{
int i,j,x,y,d,lr=1,lj=1;
for(d=1;lr&&lj;d++)
{
while(lr&&ar[cr[1].x][cr[1].y]==d)
{
for(i=-1;i<2;i++) for(j=-1;j<2;j++)
{
if(!i&&!j) continue;
x=cr[1].x+i,y=cr[1].y+j;
if(x>=0&&y>=0&&x<n&&y<m) if(!ar[x][y]&&!aj[x][y]) cr[++lr].x=x,cr[lr].y=y,ar[x][y]=ar[cr[1].x][cr[1].y]+1;
}
el(cr,lr);
}
while(lj&&aj[cj[1].x][cj[1].y]==d)
{
for(i=-1;i<2;i++) for(j=-1;j<2;j++)
{
if(!i&&!j) continue;
x=cj[1].x+i,y=cj[1].y+j;
if(x>=0&&y>=0&&x<n&&y<m) if(ar[x][y]==d+1)
{
fout<<d+1<<' '<<x+1<<' '<<y+1<<endl<<endl;
return;
}
else if(!aj[x][y]) cj[++lj].x=x,cj[lj].y=y,aj[x][y]=aj[cj[1].x][cj[1].y]+1;
}
el(cj,lj);
}
}
}
int main()
{
fin>>n>>m;
citire();
Lee();//for(int i=0;i<n;i++) {for(int j=0;j<m;j++) {if(ar[i][j]>=0&&ar[i][j]<10) fout<<' ';fout<<ar[i][j]<<' ';}fout<<endl;}
//fout<<endl;for(int i=0;i<n;i++) {for(int j=0;j<m;j++) {if(aj[i][j]>=0&&aj[i][j]<10) fout<<' ';fout<<aj[i][j]<<' ';}fout<<endl;}
return 0;
}