Pagini recente » Cod sursa (job #1327602) | Cod sursa (job #548676) | Cod sursa (job #894595) | Cod sursa (job #1136873) | Cod sursa (job #135188)
Cod sursa(job #135188)
#include<iostream.h>
#include<fstream.h>
char a[5][5];
int b[5][5],c[5][5],n,m,nr,xj,yj,xr,yr;
const int vi[8]={-1,-1,-1,0,1,1,1,0};
const int vj[8]={-1,0,1,1,1,0,-1,-1};
ifstream fin("RJ.in");
ofstream fout("RJ.out");
void citire(){
fin>>n>>m;
char c[105];
fin.getline (c,105);
for (int i=1;i<=n;i++)
{
fin.getline (c,105);
for (int j=0;j<m;j++)
{
a[i][j+1]=c[j];
if (c[j]=='R')
{
xr=i;
yr=j+1;
a[i][j+1]=' ';
}
else
if (c[j]=='J')
{
xj=i;
yj=j+1;
a[i][j+1]=' ';
}
}
}
}
void bordare(){
for(int i=0;i<=m;i++){
a[0][i]=-3;
a[m][i]=-3;
}
for(i=0;i<=n;i++){
a[i][0]=-3;
a[i][n]=-3;
}
}
void lee (int x,int y,int d[5][5]) {
int r[10000],ji[10000];
r[0]=x;
ji[0]=y;
a[x][y]=' ';
nr=1;
for(int k=0;k<nr;k++) {
for(int j=0;j<8;j++)
if(d[r[k]+vi[j]][ji[k]+vj[j]]==0&&a[r[k]+vi[j]][ji[k]+vj[j]]==' ') {
d[r[k]+vi[j]][ji[k]+vj[j]]=d[r[k]][ji[k]]+1;
r[nr]=r[k]+vi[j];
ji[nr]=r[k]+vj[j];
nr++;
}
}
}
void afisare (int e[5][5]) {
for(int i=1;i<n;i++) {
for(int j=1;j<m;j++)
if(a[i][j]!=' ')
cout<<"X";
else
cout<<e[i][j];
cout<<endl;
}
}
void main() {
citire();
n++;
m++;
b[xr][yr]=1;
c[xj][yj]=1;
bordare();
lee(xr,yr,b);
lee(xj,yj,c);
afisare(c);
int pi,pj,min=1000000;
for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
if(c[i][j]==b[i][j]&&a[i][j]>-1)
if(min>a[i][j]){
min=a[i][j];
pi=i;
pj=j; }
cout<<endl;
fout<<min<<" "<<pi<<" "<<pj;
fout.close();
}