Pagini recente » Cod sursa (job #1636324) | Cod sursa (job #1641005) | Cod sursa (job #2138027) | Cod sursa (job #1917733) | Cod sursa (job #2124843)
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
short int a[101][101];char s[101];
short int r[101][101],jj[101][101];
int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};
queue <int> lin;
queue <int> col;
int n,m;
void Lee(int i,int j,short int mat[101][101]) {
int x,y,l,c,p;
lin.push(i);
col.push(j);
mat[i][j]=1;
while (!lin.empty()) {
l=lin.front();
c=col.front();
for (p=0;p<8;++p) {
x=l+dx[p];
y=c+dy[p];
if (a[x][y]!=-1 && mat[x][y]==0) {
mat[x][y]=mat[l][c]+1;
lin.push(x);
col.push(y);
}
}
lin.pop();
col.pop();
}
}
int main()
{ int i,j,sol,x1,y1,x2,y2,x,y;
ifstream f("rj.in");
ofstream g("rj.out");
f>>n>>m;
for (i=1;i<=n;++i) {
f.get();
f.get(s,101);
for (j=1;j<=m;++j) {
if (s[j-1]==' ') a[i][j]=0;
if (s[j-1]=='X') a[i][j]=-1;
if (s[j-1]=='R') a[i][j]=1,x1=i,y1=j;
if (s[j-1]=='J') a[i][j]=2,x2=i,y2=j;
}
}
for (i=0;i<=n+1;++i)
a[i][0]=a[i][m+1]=-1;
for (j=0;j<=m+1;++j)
a[0][j]=a[n+1][j]=-1;
Lee(x1,y1,r);
Lee(x2,y2,jj);
sol=n*m+1;
for (i=1;i<=n;++i)
for (j=1;j<=m;++j)
if (r[i][j]==jj[i][j] && r[i][j]>0 && r[i][j]<sol) {
sol=r[i][j];
x=i;
y=j;
}
g<<sol<<" "<<x<<" "<<y;
return 0;
}