Pagini recente » Cod sursa (job #2746118) | Cod sursa (job #2881907) | Cod sursa (job #3266967) | Cod sursa (job #650442) | Cod sursa (job #2503878)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int dcol[8]={0,-1,1,1,0,1,-1,-1},dlin[8]={-1,-1,0,-1,1,1,0,1};
struct cap{
int l;
int c;
};
cap coada[10001];
void lee(int mat[102][102],int lp,int cp){
int sf,inc,lin,col,i;
sf=1;
inc=1;
mat[lp][cp]=1;
coada[1].l=lp;
coada[1].c=cp;
while(inc<=sf){
for(i=0;i<8;i++){
lin=coada[inc].l+dlin[i];
col=coada[inc].c+dcol[i];
if(mat[lin][col]==0){
sf++;
coada[sf].l=lin;
coada[sf].c=col;
mat[lin][col]=mat[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
}
int rom[102][102],jul[102][102];
int main()
{
ifstream in("rj.in");
ofstream out("rj.out");
char a[101],ch;
int n,m,lini,coli,minn=10001,lpj,cpj,lpr,cpr,i,j;
in>>n>>m;
for(i=0;i<=n+1;i++){
rom[i][0]=-1;
rom[i][m+1]=-1;
jul[i][0]=-1;
jul[i][m+1]=-1;
}
for(j=0;j<=m+1;j++){
rom[0][j]=-1;
rom[n+1][j]=-1;
jul[0][j]=-1;
jul[n+1][j]=-1;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
rom[i][j]=5;
in.get(ch);
for(i=1;i<=n;i++){
in.getline(a+1,m+1);
for(j=1;j<=m;j++){
if(a[j]==' ')
rom[i][j]=0;
if(a[j]=='X')
rom[i][j]=-1;
if(a[j]=='R'){
lpr=i;
cpr=j;
rom[i][j]=0;
}
if(a[j]=='J'){
lpj=i;
cpj=j;
rom[i][j]=0;
}
jul[i][j]=rom[i][j];
}
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
cout<<rom[i][j]<<" ";
cout<<'\n';
}
lee(rom,lpr,cpr);
lee(jul,lpj,cpj);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(rom[i][j]==jul[i][j] && rom[i][j]<minn && rom[i][j]!=-1 && rom[i][j]!=0){
lini=i;
coli=j;
minn=rom[i][j];
}
out<<minn<<" "<<lini<<" "<<coli;
return 0;
}