Pagini recente » Cod sursa (job #612257) | Cod sursa (job #403538) | Cod sursa (job #2117382) | Cod sursa (job #345149) | Cod sursa (job #217607)
Cod sursa(job #217607)
#include<iostream>
#include<stdio.h>
FILE *f,*g;
int main()
{
f=fopen("rj.in","r");
g=fopen("rj.out","w");
int m,n,i,j; int rx,ry,jx,jy;
char a[102][102];
int dx[]={0,0,-1,-1,-1,1,1,1};
int dy[]={1,-1,0,1,-1,0,-1,1};
fscanf(f,"%d %d\n",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(f,"%c",&a[i][j]);
if(a[i][j]=='R') {rx=i;ry=j;}
if(a[i][j]=='J') {jx=i;jy=j;}
}
fscanf(f,"\n");
}
int cl,cv,vb=0;
int d[102][102],d1[102][102];
for(i=0;i<=m+1;i++)
{
a[0][i]=d[0][i]=-1;
a[n+1][i]=d[n+1][i]=-1;
}
for(i=0;i<=n+1;i++)
{
a[i][0]='1';
a[i][m+1]='1';
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{d[i][j]=d1[i][j]=0;}
int k=1,x;
d[rx][ry]=k;
do
{
vb=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(d[i][j]==k)
{
for(x=0;x<8;x++)
{
cl=i+dx[x];
cv=j+dy[x];
if((d[cl][cv]==0)&&(a[cl][cv]!='X')&&(a[cl][cv]!='1'))
{
d[cl][cv]=k+1;
vb=1;
}
}
}
}
if(vb)k++;
}
while(vb);
k=1;
d1[jx][jy]=k;
do
{
vb=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(d1[i][j]==k)
{
for(x=0;x<8;x++)
{
cl=i+dx[x];
cv=j+dy[x];
if((d1[cl][cv]==0)&&(a[cl][cv]!='X')&&(a[cl][cv]!='1'))
{
d1[cl][cv]=k+1;
vb=1;
}
}
}
}
if(vb)k++;
}
while(vb);
int min=20000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(d[i][j]==d1[i][j])
if(d[i][j]<min&&d[i][j]>0) {min=d[i][j];rx=i;ry=j;}
}
fprintf(g,"%d %d %d\n",min,rx,ry);
return 0;
}