Pagini recente » Cod sursa (job #2800991) | Cod sursa (job #1869571) | Cod sursa (job #548138) | Cod sursa (job #2724826) | Cod sursa (job #901982)
Cod sursa(job #901982)
using namespace std;
#include<iostream>
#include<fstream>
#include<string.h>
ifstream fin("rj.in");
ofstream fout("rj.out");
char A[105][105];
int x,y,tmin=100009,i,j,k=0,h=0,Cr[100],Lr[100],Cj[100],Lj[100],n,m,l,xnou,ynou,lin,col,R[100][100],J[100][100],xx,yy,xxnou,yynou;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
int main()
{
fin>>n;fin>>m;
for(i=0;i<=n;i++)
fin.getline(A[i]+1,105);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(A[i][j]==' ')
{
R[i][j]=0;
J[i][j]=0;
}
if(A[i][j]=='X')
{
R[i][j]=-1;
J[i][j]=-1;
}
if(A[i][j]=='R')
{
R[i][j]=1;
J[i][j]=0;
Lr[++k]=i;
Cr[k]=j;
}
if(A[i][j]=='J')
{
J[i][j]=1;
R[i][j]=0;
Lj[++h]=i;
Cj[h]=j;
}
}
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
R[i][0]=J[i][0]=R[0][j]=J[0][j]=R[n+1][j]=J[n+1][j]=R[i][m+1]=J[i][m+1]=-1;
x=Lr[1];y=Cr[1];
for(i=1;i<=k;i++)
{
x=Lr[i];y=Cr[i];
for(l=0;l<8;l++)
{
xnou=x+dx[l];
ynou=y+dy[l];
if(R[xnou][ynou]==0)
{
R[xnou][ynou]=R[x][y]+1;
Lr[++k]=xnou;
Cr[k]=ynou;
}
}
}
xx=Lj[1];yy=Cj[1];
for(i=1;i<=h;i++)
{
xx=Lj[i];yy=Cj[i];
for(l=0;l<8;l++)
{
xxnou=xx+dx[l];
yynou=yy+dy[l];
if(J[xxnou][yynou]==0)
{
J[xxnou][yynou]=J[xx][yy]+1;
Lj[++h]=xxnou;
Cj[h]=yynou;
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(R[i][j]==J[i][j])
if(R[i][j]>0)
if(R[i][j]<tmin)
{
tmin=R[i][j];
lin=i;
col=j;
}
fout<<tmin<<" "<<lin<<" "<<col;
return 0;
}