Pagini recente » Cod sursa (job #1071898) | Cod sursa (job #2953583) | Cod sursa (job #2236983) | Cod sursa (job #299367) | Cod sursa (job #2553588)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("rj.in");
ofstream out("rj.out");
struct {int t=0,id=0;}v[105][105];
int n,m;
deque < pair<int,int> >p;
bool isI(int x,int y)
{
return (x>0&&y>0&&x<=n&&y<=m);
}
void read()
{
char x[106];
in>>n>>m;
in.getline(x,105);
for(int i=1;i<=n;++i)
{
in.getline(x,105);
for(int j=1;j<=m;++j)
switch (x[j-1])
{
case 'X':v[i][j].t=-1;break;
case ' ':v[i][j].t=0;break;
default:
{
v[i][j].t=1;
p.push_back(make_pair(i,j));
if(x[j-1]=='R')v[i][j].id=1;
else v[i][j].id=2;
}
}
}
}
void solve()
{
int dx[]={-1,-1,-1,0,1,1,1,0},dy[]={-1,0,1,1,1,0,-1,-1};
while(!p.empty())
{
int x=p.front().first,y=p.front().second;
p.pop_front();
for(int k=0;k<8;++k)
{
int nx=x+dx[k],ny=y+dy[k];
if(isI(nx,ny)&&v[nx][ny].t!=-1)
if(v[nx][ny].t==0)
{
p.push_back(make_pair(nx,ny));
v[nx][ny].t=v[x][y].t+1;
v[nx][ny].id=v[x][y].id;
}
else if(v[nx][ny].id!=v[x][y].id&&v[nx][ny].t==v[x][y].t+1)
{
out<<v[x][y].t+1<<' '<<nx<<' '<<ny;
exit(0);
}
}
}
}
int main()
{
read();
solve();
return 0;
}