Pagini recente » Cod sursa (job #2288405) | Cod sursa (job #166242) | Cod sursa (job #2732024) | Cod sursa (job #900563) | Cod sursa (job #257447)
Cod sursa(job #257447)
//rj
#include <stdio.h>
#define N 110
#define M 110
int n,m;
char c;
int v[N][M];
int R[2],J[2];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int c1,c2;
int p,u;
void citire()
{
int i,j;
scanf("%d%d\n",&n, &m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
scanf("%c",&c);
if(c=='R')
{
R[0]=i;
R[1]=j;
v[i][j]=1;
}
if(c=='J')
{
J[0]=i;
J[1]=j;
v[i][j]=1;
}
if(c=='X')
v[i][j]=-1;
}
scanf("%c",&c);
}
}
void bord()
{
for(int i=0;i<=n+1;++i)
{
v[i][0]=v[i][n+1]=-1;
}
for(int i=0;i<=m+1;++i)
{
v[0][i]=v[m+1][i]=-1;
}
}
void bfs()
{
int i,j,q[N*M][2];
int x[2],y[2];
q[u][0]=J[0];
q[u][1]=J[1];
u++;
q[u][0]=R[0];
q[u][1]=R[1];
while(p<=u)
{
x[0]=q[p][0];
x[1]=q[p][1];
p++;
for(i=0;i<4;++i)
{
y[0]=x[0]+dx[i];
y[1]=x[1]+dy[i];
if(v[y[0]][y[1]]==0)
{
u++;
q[u][0]=y[0];
q[u][1]=y[1];
v[y[0]][y[1]]=1 + v[x[0]][x[1]];
}
}
}
}
void afisare()
{
for(int i=0;i<=n+1;++i)
{
for(int j=0;j<=m+1;++j)
printf("%3d",v[i][j]);
printf("\n");
}
}
int caut()
{
int max=-100;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
if(v[i][j]!=-1)
{
if(v[i][j]>max)
{
max=v[i][j];
c1=i;
c2=j;
}
}
}
return max-1;
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
citire();
bord();
bfs();
//afisare();
printf("%d %d %d",caut(),c1,c2);
return 0;
}