Pagini recente » Cod sursa (job #647405) | Cod sursa (job #508012) | Cod sursa (job #2628509) | Cod sursa (job #1615349) | Cod sursa (job #2300762)
#include <cstdio>
using namespace std;
int hr[102][102], hj[102][102], ql[10000], qc[10000];
char dl[8]={-1, -1, 0, 1, 1, 1, 0, -1}, c;
char dc[8]={0, 1, 1, 1, 0, -1, -1, -1};
int main()
{
int primul, ultimul, i, l, n, m, a, b, x, y, mini=1000000, pozl, pozc;
FILE *fin, *fout;
fin=fopen("rj.in" ,"r");
fout=fopen("rj.out" ,"w");
fscanf(fin, "%d %d\n" ,&n ,&m);
for (i=0;i<=n+1;i++) {
hr[i][0]=hr[i][m+1]=hj[i][0]=hj[i][m+1]=-1;
}
for (i=0;i<=m+1;i++) {
hr[0][i]=hr[n+1][i]=hj[0][i]=hj[n+1][i]=-1;
}
for (i=1;i<=n;i++) {
for (l=1;l<=m;l++) {
c=fgetc(fin);
if (c=='X') {
hr[i][l]=hj[i][l]=-1;
}
if (c=='R') {
a=i;
b=l;
}
if (c=='J') {
x=i;
y=l;
}
if (c=='\n') {
l=m+2;
}
}
if (c!='\n') {
c=fgetc(fin);
}
//fputc(c,fout);
}
hr[a][b]=1;
ql[1]=a;
qc[1]=b;
primul=ultimul=1;
while (primul<=ultimul) {
for (i=0;i<8;i++) {
if (hr[ql[primul]+dl[i]][qc[primul]+dc[i]]==0) {
hr[ql[primul]+dl[i]][qc[primul]+dc[i]]=hr[ql[primul]][qc[primul]]+1;
ultimul++;
ql[ultimul]=ql[primul]+dl[i];
qc[ultimul]=qc[primul]+dc[i];
}
}
primul++;
}
hj[x][y]=1;
ql[1]=x;
qc[1]=y;
primul=ultimul=1;
while (primul<=ultimul) {
for (i=0;i<8;i++) {
if (hj[ql[primul]+dl[i]][qc[primul]+dc[i]]==0) {
hj[ql[primul]+dl[i]][qc[primul]+dc[i]]=hj[ql[primul]][qc[primul]]+1;
ultimul++;
ql[ultimul]=ql[primul]+dl[i];
qc[ultimul]=qc[primul]+dc[i];
}
}
primul++;
}
for (i=1;i<=n;i++) {
for (l=1;l<=m;l++) {
if (hj[i][l]==hr[i][l] && hj[i][l]!=-1 && hj[i][l]<mini && hj[i][l]!=0) {
mini=hj[i][l];
pozl=i;
pozc=l;
}
}
}
fprintf(fout, "%d %d %d" ,mini ,pozl ,pozc);
return 0;
}