Mai intai trebuie sa te autentifici.
Cod sursa(job #121574)
Utilizator | Data | 8 ianuarie 2008 23:36:52 | |
---|---|---|---|
Problema | Rj | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.82 kb |
#include<stdio.h>
#include<string.h>
int l[8]={1,1,1,-1,-1,-1,0,0};
int c[8]={0,1,-1,0,1,-1,1,-1};
char x[101][101],cc;
int in,sf,rez,i,j,n,m,k,xi,yi,xf,yf,y[101][101],z[101][101];
struct kkt
{
int a,b,k;
};
kkt q[10001];
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d%c",&n,&m);
m--;
for (i=1;i<=n;i++)
{
fgets(x[i],102,stdin);
/* k=m+1;
for (j=0;j<strlen(x[i]);j++)
if (x[i][j]=='\n') {k=j; j=strlen(x[i]);}
for (j=k;j<=m;j++)
{
x[i][j]=' ';
x[i][j+1]=NULL;
}
*/
/* while(strlen(x[i])<=m)
{
k=strlen(x[i]);
x[i][k]=' ';
x[i][k+1]=NULL;
}
*/
// scanf("%c",&cc);
}
m--;
for (i=1;i<=n;i++)
for (j=0;j<=m;j++)
{
if (x[i][j]=='R') {xi=i; yi=j;x[i][j]=' ';}
if (x[i][j]=='J') {xf=i; yf=j;x[i][j]=' ';}
}
q[1].a=xi;
q[1].b=yi;
q[1].k=1;
y[xi][yi]=1;
in=1;
sf=1;
while (in<=sf)
{
for (i=0;i<=7;i++)
if (x[q[in].a+l[i]][q[in].b+c[i]]==' '&&q[in].a+l[i]>0&&q[in].a+l[i]<=n&&q[in].b+c[i]>=0&&q[in].b+c[i]<=m&&y[q[in].a+l[i]][q[in].b+c[i]]==0)
{
sf++;
q[sf].a=q[in].a+l[i];
q[sf].b=q[in].b+c[i];
q[sf].k=q[in].k+1;
y[q[sf].a][q[sf].b]=q[sf].k;
}
in++;
}
q[1].a=xf;
q[1].b=yf;
q[1].k=1;
z[xf][yf]=1;
in=1;
sf=1;
while (in<=sf)
{
for (i=0;i<=7;i++)
if (x[q[in].a+l[i]][q[in].b+c[i]]==' '&&q[in].a+l[i]>0&&q[in].a+l[i]<=n&&q[in].b+c[i]>=0&&q[in].b+c[i]<=m&&z[q[in].a+l[i]][q[in].b+c[i]]==0)
{
sf++;
q[sf].a=q[in].a+l[i];
q[sf].b=q[in].b+c[i];
q[sf].k=q[in].k+1;
z[q[sf].a][q[sf].b]=q[sf].k;
}
in++;
}
rez=1000001;
for (i=1;i<=n;i++)
for (j=0;j<=m;j++)
if (y[i][j]==z[i][j]&&y[i][j]<rez&&y[i][j]!=0) {rez=y[i][j]; xi=i; yi=j;}
printf("%d %d %d\n",rez,xi,yi+1);
return 0;
}