Pagini recente » Cod sursa (job #1870038) | Cod sursa (job #2629414) | Cod sursa (job #1349536) | Cod sursa (job #1075636) | Cod sursa (job #2166558)
#include <stdio.h>
#include <stdlib.h>
char marc1[102][102];
char marc2[102][102];
int val[101][101];
int lee[10000][3];
char dirl[4]={-1,0,1,0};
char dirc[4]={0,1,0,-1};
int main()
{
int n,m,i,j,rl,rc,jl,jc,fst,lst,k,min=10000,al,ac;
char c;
FILE*fi,*fo;
fi=fopen("rj.in","r");
fo=fopen("rj.out","w");
fscanf(fi,"%d%d",&n,&m);
fgetc(fi);
for(i=1;i<=n;i++){
j=1;
c=fgetc(fi);
while(j<=m && c!='\n' && c!=EOF)
{
if(c!=' '){
if(c=='R')
{
rl=i;
rc=j;
}
else if(c=='J'){
jl=i;
jc=j;
}
else {marc1[i][j]=-1;
marc2[i][j]=-1;}
}
c=fgetc(fi);
j++;
}
}
for(i=0;i<=n+1 || i<=m+1;i++){
marc1[i][0]=-1;
marc1[0][i]=-1;
marc1[i][m+1]=-1;
marc1[n+1][i]=-1;
marc2[i][0]=-1;
marc2[0][i]=-1;
marc2[i][m+1]=-1;
marc2[n+1][i]=-1;
}
lee[0][0]=rl;
lee[0][1]=rc;
lee[0][2]=0;
marc1[rl][rc]=-1;
fst=0;
lst=1;
while(fst<lst){
val[lee[fst][0]][lee[fst][1]]=lee[fst][2];
for(k=0;k<4;k++){
if(marc1[lee[fst][0]+dirl[k]][lee[fst][1]+dirc[k]]!=-1)
{
lee[lst][0]=lee[fst][0]+dirl[k];
lee[lst][1]=lee[fst][1]+dirc[k];
lee[lst][2]=lee[fst][2]+1;
marc1[lee[lst][0]][lee[lst][1]]=-1;
lst++;
}
}
fst++;
}
lee[0][0]=jl;
lee[0][1]=jc;
lee[0][2]=0;
marc2[jl][jc]=-1;
fst=0;
lst=1;
while(fst<lst){
if(lee[fst][2]>val[lee[fst][0]][lee[fst][1]])
val[lee[fst][0]][lee[fst][1]]=lee[fst][2];
for(k=0;k<4;k++){
if(marc2[lee[fst][0]+dirl[k]][lee[fst][1]+dirc[k]]!=-1)
{
lee[lst][0]=lee[fst][0]+dirl[k];
lee[lst][1]=lee[fst][1]+dirc[k];
lee[lst][2]=lee[fst][2]+1;
marc2[lee[lst][0]][lee[lst][1]]=-1;
lst++;
}
}
fst++;
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
{
if(val[i][j]>0 && val[i][j]<min){
min=val[i][j];
al=i;
ac=j;
}
}
}
fprintf(fo,"%d %d %d",min,al,ac);
fclose(fi);
fclose(fo);
return 0;
}