Pagini recente » Cod sursa (job #2496955) | Cod sursa (job #1887513) | Cod sursa (job #988001) | Cod sursa (job #2979906) | Cod sursa (job #500356)
Cod sursa(job #500356)
# include <fstream.h>
# include <string.h>
# include <stdio.h>
int a[101][101],n,m,i,j,x1,y_1,x2,y2,p,u,ok,xm,ym,xn,nn,q,w;
typedef struct {int x,y;} COADA;
COADA Q[11000];
int dx[]={0,-1,0,1,0,-1,1,1,-1};
int dy[]={0,0,1,0,-1,1,1,-1,-1};
ofstream g("rj.out");
void prcg()
{ //ofstream g("rj.out");
int o,r,k=0,k2=0;
o=x2;r=y2;//g<<o<<" "<<r;
while (o!=x1 && r!=y_1)
{ Q[++k].x=o;Q[k].y=r;
for (i=1;i<=8;i++)
{ xn=o+dx[i];
nn=r+dy[i];
if (a[o][r]==(a[xn][nn]+1))
{o=xn;r=nn;
break;
}
}
}
k2=(k+1)/2;
g<<Q[k2].x<<" "<<Q[k2].y<<" "<<k/k2;
g.close();
}
int interior (int q,int w)
{ if (q>=1 && q<=n && w>=1 && w<=n) return 1;
else return 0;
}
void Lee()
{ //ofstream g("rj.out");
p=u=1;
Q[u].x=x1;Q[u].y=y_1;a[x1][y_1]=1;ok=0;
while (p<=u && ok==0)
{ xm=Q[p].x;ym=Q[p].y;
for (i=1;i<=8;i++)
{ xn=xm+dx[i];
nn=ym+dy[i];
if (interior (xn,nn)==1 && a[xn][nn]==0)
{ a[xn][nn]=a[xm][ym]+1;
Q[++u].x=xn;Q[u].y=nn;
if (xn==x2 && nn==y2) ok=1;
}
}
p++;
}
//g<<a[x2][y2];
g.close();
}
int main ()
{ ifstream f("rj.in");
//ofstream g("rj.out");
char s[101];
f>>n>>m;
for (i=1;i<=n+1;i++)
{ f.getline(s,101);
if (i!=1){
for (j=0;j<=m;j++)
if (s[j]==' ') a[i-1][j+1]=0;
else if (s[j]=='R') {a[i-1][j+1]=0;x1=i;y_1=j;}
else if (s[j]=='J') {a[i-1][j+1]=0;x2=i;y2=j;}
else if (s[j]=='X') {a[i-1][j+1]=1;}
}
}
x1=x1-1;y_1=y_1+1;
x2=x2-1;y2=y2+1;
/*for (i=1;i<=n;i++)
{ for (j=1;j<=m;j++)
g<<a[i][j]<<' ';
g<<'\n';
}*/
Lee ();prcg ();
f.close ();
//g.close ();
return 0;
}