Pagini recente » Cod sursa (job #2096965) | Cod sursa (job #1485833) | Cod sursa (job #2409332) | Cod sursa (job #1894123) | Cod sursa (job #2979363)
#include <fstream>
#include <queue>
#include <iostream>
using namespace std;
ifstream fin("rj.in");
int r[105][105],j[105][105],n,m;
int dx[]= {-1,-1,0,1,1,1,0,-1};
int dy[]= {0,1,1,1,0,-1,-1,-1};
int xr,yr,xj,yj;
void citire()
{
char x[20];
fin>>n>>m;
fin.get();
for(int i=0; i<n; i++)
{
fin.getline(x,19);
for(int j=0; j<m; j++)
{
if(x[j]==' ')
r[i][j]=0;
else if(x[j]=='R')
{
xr=i;
yr=j;
r[i][j]=0;
}
else if(x[j]=='J')
{
xj=i;
yj=j;
r[i][j]=0;
}
else if(x[j]=='X')
r[i][j]=-1;
}
}
for(int i=0; i<n; i++)
for(int jj=0; jj<m; jj++)
j[i][jj]=r[i][jj];
}
void lee(int xs,int ys,int a[][105])
{
queue<pair<int,int> > Q;
a[xs][ys]=1;
Q.push({xs,ys});
while(!Q.empty())
{
pair<int,int>p=Q.front();
Q.pop();
for(int k=0; k<8; k++)
{
int x=p.first+dx[k],y=p.second+dy[k];
if(x>=0&&x<n&&y>=0&&y<n&&a[x][y]==0)
{
Q.push({x,y});
a[x][y]=a[p.first][p.second]+1;
}
}
}
}
/*
void afish()
{
for(int i=0; i<n; i++,fout<<'\n')
for(int j=0; j<m; j++)
fout<<r[i][j]<<" ";
fout<<"___________"<<'\n';
for(int i=0; i<n; i++,fout<<'\n')
for(int jj=0; jj<m; jj++)
fout<<j[i][jj]<<" ";
}
*/
void gasim()
{
for(int i=0; i<n; i++)
{
for(int jj=0; jj<m; jj++)
{
if(r[i][jj]>0)
if(r[i][jj]==j[i][jj])
{
fout<<r[i][jj]<<" "<<i+1<<" "<<jj+1<<'\n';
return;
}
}
}
}
int main()
{
citire();
lee(xr,yr,r);///pe mat r
lee(xj,yj,j);///pe mat j
//afish();
gasim();///caut val comuna
return 0;
}