Cod sursa(job #250648)

Utilizator SheepBOYFelix Liviu SheepBOY Data 31 ianuarie 2009 14:05:53
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<stdio.h>  
int ro[100][100],ju[100][100];  
struct POS{  
int x,y;  
};  
void lee(POS start, int mat[100][100])  
{  
int i,j,u,p,coada[10100][2],x[2],y[2];  
int dlin[8]={-1,-1,0,1,1,1,0,-1};  
int dcol[8]={0,1,1,1,0,-1,-1,-1};  
u=p=0;  
mat[start.x][start.y]=1;
coada[u][0]=start.x;  
coada[u++][1]=start.y;  
while(p!=u)  
{  
x[0]=coada[p][0];  
x[1]=coada[p++][1];  
 for(i=0;i<8;++i)  
{  
    y[0]=x[0]+dlin[i];  
    y[1]=x[1]+dcol[i];  
if(!mat[y[0]][y[1]])  
{  
	
    mat[y[0]][y[1]]=mat[x[0]][x[1]]+1;  
        coada[u][0]=y[0];  
    coada[u++][1]=y[1];     
}   
}  
}  
}  
int main()  
{  
int m,n,x,y,i,j,tmin=100000;  
POS rom,jul;
freopen("rj.in","r",stdin);  
freopen("rj.out","w",stdout);  
scanf("%d%d\n",&n,&m);  
char c;

for(i=0;i<=n+1;++i)
	ro[i][0]=ju[i][0]=ro[i][m+1]=ju[i][m+1]=-1;
for(i=0;i<=m+1;++i)
	ro[0][i]=ju[0][i]=ro[n+1][i]=ju[n+1][i]=-1;

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;  
if(c=='R')  
{  
rom.x=i;  
rom.y=j;  
}  
if(c=='J')  
{  
jul.x=i;  
jul.y=j;  
}  
}
scanf("\n");
}
lee(rom,ro);  
lee(jul,ju);  
for(i=1;i<=n;++i)  
for(j=1;j<=m;++j)  
if(ro[i][j]==ju[i][j])  
{  
if(tmin>ro[i][j]&&ro[i][j]>0)  
{  
tmin=ro[i][j];  
x=i;  
y=j;  
}  
  
}  
printf("%d %d %d",tmin,x,y);  
return 0;  
}