Pagini recente » Cod sursa (job #1534239) | Cod sursa (job #662456) | Cod sursa (job #1283885) | Cod sursa (job #1666844) | Cod sursa (job #520909)
Cod sursa(job #520909)
#include<fstream.h>
int ri,rj,ic,jc,iv,jv,ji,jj;
int cr[2][10201],cj[2][10201];
int j[101][101],r[101][101];
char a[101][101];
int u,p,d;
int n,m,i,k,w1,w2,max;
int di[8]={ 0, 1, 1, 1, 0,-1,-1,-1};
int dj[8]={ 1, 1, 0,-1,-1,-1, 0, 1};
//vt
//int t[10201]; nu imi trebuie sper :-s
ifstream f ("rj.in");
ofstream g ("rj.out");
int main (){
max=25000000;
f>>n>>m;
f.get();
for(i=1;i<=n;i++){
f.get(a[i],101);
f.get();
}
for(i=1;i<=n;i++)
for(k=1;k<=m;k++){
if(a[i][k-1]=='X'){
r[i][k]=-1;
j[i][k]=-1;}
if(a[i][k-1]=='R'){
ri=i;rj=k;
r[i][k]=1;
}
if(a[i][k-1]=='J'){
j[i][k]=1;
ji=i;jj=k;
}
}
p=1;u=1;
cr[0][1]=ri;cr[1][1]=rj;
while(p<=u){
ic=cr[0][p];
jc=cr[1][p];
for(d=0;d<8;d++){
iv=ic+di[d];
jv=jc+dj[d];
if(iv>0&&jv>0&&iv<n&&jv<m&&r[iv][jv]==0){
u++;
cr[0][u]=iv;
cr[1][u]=jv;
r[iv][jv]=r[ic][jc]+1;
}
}
p++;
}
p=1;u=1;
cj[0][1]=ji;cj[1][1]=jj;
while(p<=u){
ic=cj[0][p];
jc=cj[1][p];
for(d=0;d<8;d++){
iv=ic+di[d];
jv=jc+dj[d];
if(iv>0&&jv>0&&iv<=n&&jv<=m&&j[iv][jv]==0){
u++;
cj[0][u]=iv;
cj[1][u]=jv;
j[iv][jv]=j[ic][jc]+1;
if(r[iv][jv]==j[iv][jv]&&j[iv][jv]<max){
w1=iv;
w2=jv;
max=j[iv][jv];
}
}
}
p++;
}
g<<max<<' '<<w1<<' '<<w2;
return 0;
}