Pagini recente » Cod sursa (job #2050382) | Cod sursa (job #334934) | Cod sursa (job #968859) | Cod sursa (job #527269) | Cod sursa (job #1582513)
#include <iostream>
#include <cstdio>
#include <cstring>
#define N 104
using namespace std;
int rom[N][N], jul[N][N];
struct coada
{
int lin;
int col;
};
coada c[N*N];
int dx[]= {-1, -1, -1, 1, 1, 1, 0, 0};
int dy[]= {-1, 0, 1, -1, 0, 1, -1, 1};
char a[N];
int main()
{
freopen("rj.in", "r", stdin);
freopen("rj.out", "w", stdout);
int n, m, i, j,l;
cin>>n>>m;
cin.get();
char sir[110];
int xr, yr, xj, yj;
for(i= 1; i<= n; i++)
{
cin.getline(sir,105);
l=strlen(sir);
for(j=0; j<=l-1; j++)
{
if(sir[j]=='R')
{
rom[i][j+1]= 1;
xr= i;
yr= j+1;
}
if(sir[j]=='J')
{
jul[i][j+1]= 1;
xj= i;
yj= j+1;
}
if(sir[j]=='X')rom[i][j+1]= jul[i][j+1]= -1;
}
}
//bordare
for(i= 0; i<= m+1; i++) rom[0][i]= rom[n+1][i]= jul[0][i]= jul[n+1][i]= -1;
for(i= 0; i<= n+1; i++) rom[i][0]= rom[i][m+1]= jul[i][0]= jul[i][m+1]= -1;
//lee pe matricea lui romeo
int p= 1, u= 1, x, y;
c[1].lin= xr;
c[1].col= yr;
while(p<= u)
{
x= c[p].lin;
y= c[p].col;
p++;
for(i= 0; i<8; i++)
{
if(rom[x+dx[i]][y+dy[i]] == 0)
{
u++;
c[u].lin= x+ dx[i];
c[u].col= y+ dy[i];
rom[x+dx[i]][y+dy[i]]= rom[x][y]+ 1;
}
}
}
/*
for(i= 1; i<= n; i++)
{
for(j= 1; j<= m; j++)
printf("%d ",rom[i][j]);
printf("\n") ;
}
*/
p= u= 1;
c[1].lin= xj;
c[1].col= yj;
while(p<= u)
{
x= c[p].lin;
y= c[p].col;
p++;
for(i= 0; i<8; i++)
{
if(jul[x+dx[i]][y+dy[i]] == 0)
{
u++;
c[u].lin= x+ dx[i];
c[u].col= y+ dy[i];
jul[x+dx[i]][y+dy[i]]= jul[x][y]+ 1;
}
}
}
int tmin= 2000000000, xmin, ymin;
for(i= 1; i<= n; i++)
for(j= 1; j<= m; j++)
if(rom[i][j]==jul[i][j] && rom[i][j] >0)
{
if(rom[i][j]< tmin)
{
tmin= rom[i][j];
xmin= i;
ymin= j;
}
}
cout<<tmin<<' '<<xmin<<' '<<ymin;
return 0;
}