Cod sursa(job #219921)

Utilizator allynaAlina S allyna Data 8 noiembrie 2008 21:00:53
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include<fstream.h>
#include<iostream.h>
char a[101][101];
int b[101][101],c[101][101],n,m,ij,jj,ir,jr,ci[10000],cj[10000];
int d[]={-1,0,1,0};
int d1[]={0,1,0,-1};
int leer()
{int p,u,i,j;

 p=u=1;
 ci[u]=ir;
 cj[u]=jr;

 b[ir][jr]=1;

 while(p<=u)
 {i=ci[p];
  j=cj[p];
 for(int k=0;k<=3;k++)
  if(b[d[k]][d1[k]]!=-1&&b[d[k]][d1[k]]>b[i][j]+1) {u++;
					  ci[u]=i+1;
					  cj[u]=j;
					  b[d[k]][d1[k]]=b[i][j]+1;}

  
  
  
  p++;}
return 0;
}

int leej()
{int p,u,i,j;

 p=u=1;
 ci[u]=ij;
 cj[u]=jj;

 c[ij][jj]=1;

 while(p<=u)
 {i=ci[p];
  j=cj[p];
for(int k=0;i<=3;i++)
  if(c[d[k]][d1[k]]!=-1&&c[d[k]][d1[k]]>c[i][j]+1) {u++;
					  ci[u]=i+1;
					  cj[u]=j;
					  c[d[k]][d1[k]]=c[i][j]+1;}
    p++;}

 return 0;

}

int main()
 {char d;
  int i,j,tmin=99999;
ifstream in("rj.in");
ofstream out("rj.out"); 
in>>n>>m;
for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
	{in>>a[i][j];

	  if(a[i][j]=='X') {b[i][j]=-1;
			    c[i][j]=-1;}

	  else if(a[i][j]==' ') {b[i][j]=99999;
				 c[i][j]=99999;}

	       else if(a[i][j]=='R') {ir=i;
				      jr=j;
				      b[i][j]=1;
				      c[i][j]=99999;}

		    else if(a[i][j]=='J') {ij=i;
					   jj=j;
					   c[i][j]=1;
					   b[i][j]=99999;}

			  	  }

in.close();

 for(i=0;i<=n+1;i++)
  {b[i][0]=b[i][m+1]-1;
    c[i][0]=c[i][m+1]=-1;}

 for(j=0;j<=m+1;j++)
  b[0][j]=b[n+1][j]=c[0][j]=c[n+1][j]=-1;
  leer();
  leej();

/* for(i=1;i<=n;i++)
  for(j=1;j<=m;j++)
   if(b[i][j]==c[i][j]&&b[i][j]!=-1&&b[i][j]!=1) if(b[i][j]<tmin) {tmin=b[i][j];
					   ir=i;
					   jr=j;
					  } */

out<<tmin<<ir<<jr<<endl;
out.close();
return 0;
  }