Pagini recente » Cod sursa (job #2741053) | Cod sursa (job #1144472) | Cod sursa (job #176391) | Cod sursa (job #1997703) | Cod sursa (job #1291047)
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct structura{
int i,j;
};
const int dx[] = { -1 , -1 , 0 , 1 , 1 , 1 , 0 , -1 } ;
const int dy[] = { 0 , 1 , 1 , 1 , 0 , -1 , -1 , -1 } ;
int n,m,i,j,a[101][101],b[101][101],mini=1000000000;
char c;
structura Q[10001];
structura ju;
structura ro;
structura result;
int cifra(char c){
if(c>='0' && c<='9') return 1;
return 0;
}
int main(){
c=f.get();
while(c!=' '){
n=n*10+(c-'0');
c=f.get();
}
c=f.get();
while(c!='\n'){
if(cifra(c)) m=m*10+(c-'0');
c=f.get();
}
for(i=1;i<=n;++i){
j=0;
c=' ';
while(j<=m){
c=f.get();
++j;
if(c=='X'){
a[i][j]=-1;
b[i][j]=-1;
}
else
if(c=='R'){
b[i][j]=1;
a[i][j]=-1;
ro.i=i;
ro.j=j;
}
else
if(c=='J'){
a[i][j]=1;
ju.i=i;
ju.j=j;
b[i][j]=-1;
}
}
while(c!='\n' && i<n) c=f.get();
}
Q[0]=ju;
a[ju.i][ju.j]=1;
for(int st=0,dr=1;st<=dr;++st){
structura ret=Q[st];
for(int k=0;k<8;++k){
structura acm=ret;
acm.i+=dx[k];
acm.j+=dy[k];
if(acm.i>0 && acm.i<=n && acm.j>0 && acm.j<=m){
if(a[acm.i][acm.j]==0){
Q[++dr]=acm;
a[acm.i][acm.j]=a[ret.i][ret.j]+1;
}
}
}
}
Q[0]=ro;
b[ro.i][ro.j]=1;
for(int st=0,dr=1;st<=dr;++st){
structura ret=Q[st];
for(int k=0;k<8;++k){
structura acm=ret;
acm.i+=dx[k];
acm.j+=dy[k];
if(acm.i>0 && acm.i<=n && acm.j>0 && acm.j<=m){
if(b[acm.i][acm.j]==0){
Q[++dr]=acm;
b[acm.i][acm.j]=b[ret.i][ret.j]+1;
}
}
}
}
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(a[i][j]==b[i][j] && a[i][j]>0 && b[i][j]>0){
if(mini>a[i][j]){
result.i=i;
result.j=j;
mini=a[i][j];
}
}
g<<mini<<' '<<result.i<<' '<<result.j<<'\n';
g.close();
return 0;
}