Pagini recente » Cod sursa (job #2712328) | Cod sursa (job #367192) | Cod sursa (job #2775766) | Cod sursa (job #2165076) | Cod sursa (job #2951919)
#include <fstream>
#include <string.h>
#include <climits>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
short int di[]={-1,-1,-1,0,0,1,1,1};
short int dj[]={-1,0,1,1,-1,1,0,-1};
int n,m,i,j,ri,rj,ji,jj,d[101][101],d1[101][101],i6,j6;
char x[105];
bool a1[101][101];
struct far {
int lin,col;
}q[10001];
int main() {
int minim=INT_MAX;
fin>>n >>m;
fin.getline(x,105);
for(i=1;i<=n;i++) {
fin.getline(x+1,105);
for(j=1;j<=m;j++) {
if(x[j]=='X') {
a1[i][j]=1;
d[i][j]=-1;
d1[i][j]=-1;
}
if(x[j]=='J') {
ji=i,jj=j;
}
if(x[j]=='R') {
ri=i,rj=j;
}
}
}
int p=1;
int u=1;
q[u].lin=ji, q[u].col=jj;
d[ji][jj]=1;
while(p<=u) {
int l=q[p].lin;
int c=q[p].col;
for(int i=0;i<8;i++) {
int lv=l+di[i];
int cv=c+dj[i];
if(lv>=1 && lv<=n && cv>=1 && cv<=m && d[lv][cv]==0 && a1[lv][cv]==0) {
u++;
q[u].lin=lv, q[u].col=cv;
d[lv][cv]=d[l][c]+1;
}
}
p++;
}
p=1;
u=1;
q[u].lin=ri, q[u].col=rj;
d1[ri][rj]=1;
while(p<=u) {
int l=q[p].lin;
int c=q[p].col;
for(int i=0;i<8;i++) {
int lv=l+di[i];
int cv=c+dj[i];
if(lv>=1 && lv<=n && cv>=1 && cv<=m && d1[lv][cv]==0 && a1[lv][cv]==0) {
u++;
q[u].lin=lv, q[u].col=cv;
d1[lv][cv]=d1[l][c]+1;
}
}
p++;
}
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++) {
if(d[i][j]==d1[i][j]) {
if(d[i][j]<minim && d[i][j]>0) {
minim=d[i][j];
i6=i;
j6=j;
}
}
}
}
fout<<minim <<' '<<i6<<' '<<j6;
return 0;
}
/// 2390 aia cu rj