Pagini recente » Cod sursa (job #2774898) | Cod sursa (job #1443693) | Cod sursa (job #3203019) | Cod sursa (job #1074718) | Cod sursa (job #2595080)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int a[105][105],b[105][105],n,m,xR,yR,xJ,yJ;
struct coord
{
int x,y;
}v[105*105];
void citire()
{ char c[105];
in>>n>>m;
for(int i=0; i<=n; ++i)
{in.getline(c+1,105);
for(int j=1; j<=m; ++j)
{
if(c[j]=='R') xR=i,yR=j,a[xR][yR]=b[xR][yR]=1;
else if(c[j]=='J') xJ=i,yJ=j,a[xJ][yJ]=b[xJ][yJ]=1;
else if(c[j]=='X') a[i][j]=b[i][j]=-1;
}
}
}
int interior(int x, int y)
{
return (x>=1&&y>=1&&x<=n&&y<=m);
}
int dx[]={0,1,1,1,0,-1,-1,-1};
int dy[]={1,1,0,-1,-1,-1,0,1};
void leeRomeo()
{
int st,dr;
st=dr=1;
v[1].x=xR;
v[1].y=yR;
while(st<=dr)
{
for(int i=0; i<=7; ++i)
{
int newx=dx[i]+v[st].x;
int newy=dy[i]+v[st].y;
if(interior(newx,newy)&&a[newx][newy]==0)
{
dr++;
v[dr].x=newx;
v[dr].y=newy;
a[newx][newy]=1+a[v[st].x][v[st].y];
}
}
st++;
}
}
void leeJulieta()
{
int st,dr;
st=dr=1;
v[1].x=xJ;
v[1].y=yJ;
while(st<=dr)
{
for(int i=0; i<=7; ++i)
{
int newx=dx[i]+v[st].x;
int newy=dy[i]+v[st].y;
if(interior(newx,newy)&&b[newx][newy]==0)
{
dr++;
v[dr].x=newx;
v[dr].y=newy;
b[newx][newy]=1+b[v[st].x][v[st].y];
}
}
st++;
}
}
int main()
{ int min=999999;
citire();
leeRomeo();
leeJulieta();
for(int i=1; i<=n; ++i)
for(int j=1; j<=m; ++j)
if(a[i][j]<min&&a[i][j]>1&&a[i][j]==b[i][j])
{min=a[i][j];
xR=i;
yR=j;
}
out<<min<<" "<<xR<<" "<<yR;
return 0;
}