Cod sursa(job #158072)

Utilizator mihai0110Bivol Mihai mihai0110 Data 13 martie 2008 13:54:13
Problema Rj Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include<stdio.h>
int i,j,n,m,sri,srj,sjj,sji,min=32000,solx,soly;
int cx[1001],cy[1001];
char c,a[100][100];
int R[101][101],J[101][101];
void lee(int si,int sj,int a[101][101])
{
	int di[8]={1,0,-1,0,1,-1,1,-1};
	int dj[8]={0,1,0,-1,1,-1,-1,1};
	int p=1,u=1,i,l,c;
	cx[p]=si;
	cy[p]=sj;
	a[si][sj]=1;
	while(p<=u)
	{
		l=cx[p];
		c=cy[p];
		for(i=0;i<8;i++)
			if(a[l+di[i]][c+dj[i]]==0)
			{
				u++;
				cx[u]=l+di[i];
				cy[u]=c+dj[i];
				a[l+di[i]][c+dj[i]]=a[l][c]+1;
			}
		p++;
	}
}
int main(void)
{
	freopen("rj.in","r",stdin);
	freopen("rj.out","w",stdout);

	scanf("%d%d\n",&n,&m);
	for(i=1;i<=n;i++)
	a[i][0]='1';
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=m;j++)
		{
			scanf("%c",&c);
			a[i][j]=c;
			if(c=='R')
			{
				sri=i;
				srj=j;
			}
			else
			if(c=='J')
			{
				sji=i;
				sjj=j;
			}
			else
			if(c=='X')
			{
				R[i][j]=-1;
				J[i][j]=-1;
			}
		}
		scanf("%c",&c);
	}
	for(i=0;i<=n+1;i++)
	{
		R[i][0]=-1;
		R[i][m+1]=-1;
		J[i][0]=-1;
		J[i][m+1]=-1;
	}
	for(i=0;i<=m+1;i++)
	{
		R[0][i]=-1;
		R[n+1][i]=-1;
		J[0][i]=-1;
		J[n+1][i]=-1;
	}
	lee(sri,srj,R);
	i=i;
	lee(sji,sjj,J);

	for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	if(R[i][j]==J[i][j]&&R[i][j]>0&&R[i][j]<min)
		{
		min=R[i][j];
		solx=i;
		soly=j;
		}
	printf("%d %d %d\n",min,solx,soly);
	return 0;
}