Pagini recente » Cod sursa (job #2053700) | Cod sursa (job #1234218) | Cod sursa (job #1464721) | Cod sursa (job #494224) | Cod sursa (job #1023455)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
char x[101][101];
int i,j,ir,jr,ij,jj,n,m,iv,jv,ic,jc,p,u,minim,imin,jmin,ok,d;
int di[]={-1,-1,-1, 0, 0, 1, 1, 1};
int dj[]={-1, 0, 1,-1, 1,-1, 0, 1};
int ro[101][101],ju[101][101], c[3][10001];
int main () {
// freopen ("rj.in", "r", stdin);
//freopen ("rj.out", "w" , stdout);
/*scanf ("%d%d", &n,&m);
scanf ("\n");
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
scanf("%c",&x[i][j]);
if (x[i][j] == 'R'){
ir = i;
jr = j;
}
if (x[i][j] == 'J'){
ij=i;
jj=j;
}
}
scanf("\n");
}
for (i=1;i<=n;i++) {
for (j=1;j<=m;j++) {
if (x[i][j]== 'R' )
ro[i][j]=1;
if (x[i][j]== 'J' )
ju[i][j]=1;
if (x[i][j]=='X')
ro[i][j]=ju[i][j]=-1;
}
}*/
fin>>n>>m;
fin.get(x[0][0]);
for(i=1;i<=n;i++)
{
fin.getline(x[i]+1,m+5);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(x[i][j]=='R')
{
ir=i;
jr=j;
ro[i][j]=1;
}
else if(x[i][j]=='J')
{
ij=i;
jj=j;
ju[i][j]=1;
}
else if(x[i][j]=='X')
{
ro[i][j]=ju[i][j]=-1;
}
else
x[i][j]=' ';
}
x[i][m+1]=0;
}
p=u=1;
c[0][1]=ir;
c[1][1]=jr;
while (p<=u) {
ic=c[0][p];
jc=c[1][p];
for (d=0;d<=7;d++) {
iv=ic+di[d];
jv=jc+dj[d];
if (iv>=1&&iv<=n&&jv>=1&&jv<=m&&ro[iv][jv]==0) {
u++;
c[0][u]=iv;
c[1][u]=jv;
ro[iv][jv]=ro[ic][jc]+1;
}
}
p++;
}
p=u=1;
c[0][1]=ij;
c[1][1]=jj;
while (p<=u) {
ic=c[0][p];
jc=c[1][p];
for (d=0;d<=7;d++) {
iv=ic+di[d];
jv=jc+dj[d];
if (iv>=1&&iv<=n&&jv>=1&&jv<=m&&ju[iv][jv]==0) {
u++;
c[0][u]=iv;
c[1][u]=jv;
ju[iv][jv]=ju[ic][jc]+1;
}
}
p++;
}
minim = n*m +10;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (ro[i][j]==ju[i][j]&&ro[i][j]>0)
if (ro[i][j]<minim){
minim=ro[i][j];
imin=i;
jmin=j;
}
fout << minim<<" "<< imin <<" "<<jmin<<"\n";
return 0;
}