Cod sursa(job #131703)

Utilizator mircea_infoSuciu Mircea-Gabriel mircea_info Data 4 februarie 2008 13:05:41
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include<stdio.h>

int ro[101][101],ju[101][101];
struct coditza {char i,j;};
coditza q[5001];

int main()
{
 int pq,uq,n,i,j,m,ir,jr,ij,jj,nr;
 char c;
 freopen("rj.in","r",stdin);
 scanf("%d%d",&n,&m);
 scanf("%c",&c);
 for(i=1;i<=n;i++)
 {
  for(j=1;j<=m;j++)
     {
      scanf("%c",&c);
      if(c=='X') ro[i][j]=ju[i][j]=-1;
      else
       {
	ro[i][j]=ju[i][j]=0;
	if(c=='R') ir=i,jr=j;
	      else if(c=='J') ij=i,jj=j;
       }
     }
  scanf("%c",&c);
 }
 fclose(stdin);
 q[pq=uq=0].i=ir,q[pq].j=jr;
 ro[ir][jr]=1;
 int di,dj;
 while(pq<=uq)
 {
  i=q[pq].i;j=q[pq++].j;
  nr=ro[i][j];nr++;
  for(di=-1;di<=1;di++)
   for(dj=-1;dj<=1;dj++)
     if((di!=0||dj!=0)
	&&i+di>=1&&i+di<=n&&
	  j+dj>=1&&j+dj<=m&&ro[i+di][j+dj]==0)
	     {
	      ro[i+di][j+dj]=nr;
	      q[++uq].i=i+di;q[uq].j=j+dj;
	     }
 }
 q[pq=uq=0].i=ij,q[pq].j=jj;
 ju[ij][jj]=1;
 while(pq<=uq)
 {
  i=q[pq].i;j=q[pq++].j;
  nr=ju[i][j];nr++;
  for(di=-1;di<=1;di++)
   for(dj=-1;dj<=1;dj++)
     if((di!=0||dj!=0)
	&&i+di>=1&&i+di<=n&&
	  j+dj>=1&&j+dj<=m&&ju[i+di][j+dj]==0)
	     {
	      ju[i+di][j+dj]=nr;
	      q[++uq].i=i+di;q[uq].j=j+dj;
	     }
 }
 int min=10001,imin,jmin;
 for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
    if(ro[i][j]==ju[i][j]&&ro[i][j]>0)
	      if(ro[i][j]<min)
			min=ro[imin=i][jmin=j];
 freopen("rj.out","w",stdout);
 printf("%d %d %d\n",min,imin,jmin);
 fclose(stdout);
 return 0;
}