Pagini recente » Cod sursa (job #1635745) | Cod sursa (job #2761531) | Cod sursa (job #720223) | Cod sursa (job #314871) | Cod sursa (job #2561874)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
queue <int> qx,qy;
int n,m;
int mat[101][101];
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1};
void afis()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<mat[i][j]<<" ";
cout<<"\n";
}
}
bool verif(int x,int y)
{
if(x>0 && x<=n && y>0 && y<=m)
return 1;
else
return 0;
}
void bfs()
{
while(qx.empty()==0)
{
int nowx=qx.front();
int nowy=qy.front();
for(int i=0;i<8;i++)
{
int nextx=nowx+dx[i];
int nexty=nowy+dy[i];
if(verif(nextx,nexty)==1 && mat[nextx][nexty]!=100000)
{
if(mat[nextx][nexty]==0)
{
if(mat[nowx][nowy]>0)
mat[nextx][nexty]=mat[nowx][nowy]+1;
else
mat[nextx][nexty]=mat[nowx][nowy]-1;
qx.push(nextx);
qy.push(nexty);
}
else if(mat[nextx][nexty]==-(mat[nowx][nowy]-1) && mat[nowx][nowy]<0)
{
out<<mat[nextx][nexty]<<" "<<nextx<<" "<<nexty;
return;
}
}
}
qx.pop();
qy.pop();
}
}
void citire()
{
in>>n>>m;
in.get();
for(int i=1;i<=n;i++)
{
char s[150];
in.getline(s,150);
for(int j=0;j<m;j++)
{
if(s[j]=='R')
{
qx.push(i);
qy.push(j+1);
mat[i][j+1]=1;
}
else if(s[j]=='J')
{
qx.push(i);
qy.push(j+1);
mat[i][j+1]=-1;
}
else if(s[j]=='X')
{
mat[i][j+1]=100000;
}
else
{
mat[i][j+1]=0;
}
}
}
}
int main()
{
citire();
bfs();
return 0;
}