Pagini recente » Cod sursa (job #970274) | Cod sursa (job #2536536) | Cod sursa (job #1895595) | Cod sursa (job #579400) | Cod sursa (job #1169826)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m;
char c[300];
queue<pair<int, int> > Q;
const int di[] = { 1, 0, -1, -1, -1, 0, 1,1 };
const int dj[] = { 1, 1, 1, 0, -1,-1,-1,0 };
int a[101][101];
int s[101][101];
bool inside(int i, int j)
{
return i<=n && j<=m && i>=1 && j >= 1;
}
int main()
{
fin>>n>>m;
fin.getline(c,30);
for(int i=1;i<=n;i++)
{
fin.getline(c,300);
for(int j=1;j<=n;j++)
if(c[j-1] == 'X')
{
a[i][j] = -1;
}
else if(c[j-1] == 'R')
{
s[i][j] = 1;
Q.push(make_pair(i,j));
a[i][j] = 1;
}
else if(c[j-1] == 'J')
{
s[i][j] = 2;
a[i][j] = 1;
Q.push(make_pair(i,j) );
}
}
while(!Q.empty())
{
int i = Q.front().first;
int j = Q.front().second;
Q.pop();
for(int k = 0; k<8 ;k ++)
{
int inou = i + di[k];
int jnou = j + dj[k];
if(inside(inou,jnou))
{
if(a[inou][jnou] == 0)
{
Q.push(make_pair(inou,jnou));
a[inou][jnou] = a[i][j] + 1;
s[inou][jnou] = s[i][j];
}
else if(s[i][j] == 1 && s[inou][jnou] == 2)
{
fout<<a[i][j]<<' '<<i<<' '<<j<<'\n';
k = 9;
while(!Q.empty())
Q.pop();
}
}
}
}
fin.close();
return 0;
}