Pagini recente » Cod sursa (job #853958) | Cod sursa (job #2440268) | Cod sursa (job #109302) | Cod sursa (job #928705) | Cod sursa (job #505312)
Cod sursa(job #505312)
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int a[100][100],b[100][100],n,m;
struct coada {
int x;
int y;
}co[100000],jr[2];
int main()
{
int i,j,inc,sfc,ii,jj,k,tmin=102*102+5;
int di[9]={0,-1, -1, 0, 1, 1, 1, 0, -1};
int dj[9]={0,0, 1, 1, 1, 0, -1, -1,-1};
char cc;
FILE *f=fopen("rj.in", "r");
FILE *g=fopen("rj.out", "w");
fscanf(f,"%d %d",&n,&m);
for(i=1; i<=n; i++) {
fscanf(f,"%c",&cc);
for(j=1; j<=m;j++) {
fscanf(f,"%c",&cc);
if(cc=='R') {
a[i][j]=0;
b[i][j]=0;
jr[0].x=i;
jr[0].y=j;
}
else if(cc=='J') {
a[i][j]=0;
b[i][j]=0;
jr[1].x=i;
jr[1].y=j;
}
else if(cc=='X') {
a[i][j]=-2;
b[i][j]=-2;
}
else if (cc==' ') {
a[i][j]=-1;
b[i][j]=-1;
}
}
}
sfc=0; inc=0;
co[inc].x=jr[0].x;
co[inc].y=jr[0].y;
while (inc<=sfc) {
i=co[inc].x;
j=co[inc].y;
inc++;
for(k=1;k<=8;k++)
{
ii=i+di[k];
jj=j+dj[k];
if(a[ii][jj]==-1)
{ a[ii][jj]=a[i][j]+1;
sfc++;
co[sfc].x=ii;
co[sfc].y=jj;
}
}
}
sfc=0; inc=0;
co[inc].x=jr[1].x;
co[inc].y=jr[1].y;
while (inc<=sfc) {
i=co[inc].x;
j=co[inc].y;
inc++;
for(k=1;k<=8;k++)
{
ii=i+di[k];
jj=j+dj[k];
if(b[ii][jj]==-1)
{
b[ii][jj]=b[i][j]+1;
sfc++;
co[sfc].x=ii;
co[sfc].y=jj;
}
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
if(a[i][j]==b[i][j] && a[i][j]>0) {
if(a[i][j]<tmin) {
tmin=a[i][j];
ii=i;
jj=i;
}
}
}
}
fprintf(g,"%d %d %d", tmin+1, ii,jj);
fclose(f);
fclose(g);
return 0;
}