Pagini recente » Clasament pbb | Cod sursa (job #261853) | Clasament rezolvarijudeteanaliceu | Cod sursa (job #2497997) | Cod sursa (job #2283006)
#include<iostream>
#include<fstream>
using namespace std;
long n,m,i,j,in=0,sf=0,xc[10002],yc[10002],x,y,xj,yj,pmin=10002;
int rom[101][101],jul[101][101],dl[]={-1,-1,-1,0,1,1,1,0},dc[]={-1,0,1,1,1,0,-1,-1};
char s;
int main(){
ifstream f("rj.in");
ofstream o("rj.out");
f>>n>>m;
f.get(s);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
f.get(s);
if(s==' '){
rom[i][j]=0;
jul[i][j]=0;
}
else if(s=='R'){
rom[i][j]=1;
x=i;
y=j;
}
else if(s=='J'){
jul[i][j]=1;
xj=i;
yj=j;
}
else{
rom[i][j]=-1;
jul[i][j]=-1;
}
}
f.get(s);
}
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
if(i==0||j==0||i==n+1||j==m+1){
rom[i][j]=-1;
jul[i][j]=-1;
}
xc[0]=x;
yc[0]=y;
while(in<=sf){
for(i=0;i<8;i++){
x=xc[in]+dl[i];
y=yc[in]+dc[i];
if(!rom[x][y]){
rom[x][y]=rom[xc[in]][yc[in]]+1;
sf++;
xc[sf]=x;
yc[sf]=y;
}
}
in++;
}
in=0;
sf=0;
xc[0]=xj;
yc[0]=yj;
while(in<=sf){
for(i=0;i<8;i++){
x=xc[in]+dl[i];
y=yc[in]+dc[i];
if(!jul[x][y]){
jul[x][y]=jul[xc[in]][yc[in]]+1;
sf++;
xc[sf]=x;
yc[sf]=y;
}
}
in++;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(rom[i][j]==jul[i][j]&&rom[i][j]<pmin&&rom[i][j]>0){
pmin=rom[i][j];
x=i;
y=j;
}
o<<pmin<<" "<<x<<" "<<y<<" ";
f.close();
o.close();
}