Pagini recente » Cod sursa (job #1631026) | Cod sursa (job #2407400) | Cod sursa (job #2577689) | Cod sursa (job #3145422) | Cod sursa (job #1992409)
#include <fstream>
#include <deque>
using namespace std;
ifstream fi("rj.in");
ofstream fo("rj.out");
int A[102][102],R[102][102],J[102][102],i,j,n,m,xr,yr,xj,yj,xl,yl,tmin=10001;
int dl[]={-1,-1,0,1,1,1,0,-1};
int dc[]={0,1,1,1,0,-1,-1,-1};
char c;
pair <int,int> q;
deque <pair <int,int> > D;
void lee(int x,int y, int X[102][102])
{
int k;
X[x][y]=1;
D.push_back(make_pair(x,y));
while(!D.empty())
{
q=D.front();
D.pop_front();
for(k=0;k<=7;k++)
{
if(A[q.first+dl[k]][q.second+dc[k]]==0 && X[q.first+dl[k]][q.second+dc[k]]==0)
{
X[q.first+dl[k]][q.second+dc[k]]=X[q.first][q.second]+1;
D.push_back(make_pair(q.first+dl[k],q.second+dc[k]));
}
}
}
}
int main()
{
fi>>n>>m;
for(i=1;i<=n;i++)
{
A[i][0]=-1;
A[i][m+1]=-1;
}
for(j=1;j<=m;j++)
{
A[0][j]=-1;
A[n+1][j]=-1;
}
for(i=1;i<=n;i++)
{
c=fi.get();
for(j=1;j<=m;j++)
{
c=fi.get();
if(c=='X')
A[i][j]=-1;
if(c==' ')
A[i][j]=0;
if(c=='R')
{
A[i][j]=0;
xr=i;
yr=j;
}
if(c=='J')
{
A[i][j]=0;
xj=i;
yj=j;
}
}
}
R[xr][yr]=1;
lee(xr,yr,R);
J[xj][yj]=1;
lee(xj,yj,J);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j] && R[i][j]<tmin && R[i][j]!=0 && R[i][j]!=-1)
{
xl=i;
yl=j;
tmin=R[i][j];
}
}
fo<<tmin<<" "<<xl<<" "<<yl;
fi.close();
fo.close();
return 0;
}