Pagini recente » Cod sursa (job #2469676) | Cod sursa (job #1832608) | Cod sursa (job #2281167) | Cod sursa (job #1081152) | Cod sursa (job #2503918)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int r[102][102] , ju[102][102] , a , b;
struct ura{
int l , c;
};
ura coada[100001];
int main()
{
int n,c,x,y,m,i,j,romeol,romeoc,jull, julc , tmin=2101010;
char lit;
in>>n>>m;
in.get(lit);
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
in.get(lit);
if(lit==' '){
r[i][j]=0;
ju[i][j]=0;
}
if(lit=='X'){
r[i][j]=-1;
ju[i][j]=-1;
}
if(lit=='R'){
romeol=i;
romeoc=j;
r[i][j]=0;
ju[i][j]=0;
}
if(lit=='J'){
jull=i;
julc=j;
r[i][j]=0;
ju[i][j]=0;
}
}
in.get(lit);
}
for(int i=0;i<=n;i++){
r[i][0]=-1;
r[i][n+1]=-1;
r[0][i]=-1;
r[n+1][i]=-1;
ju[i][0]=-1;
ju[i][n+1]=-1;
ju[0][i]=-1;
ju[n+1][i]=-1;
}
int dirl[4]={-1,0,1,0}, dirc[4]={0,1,0,-1};
int sf=1, inc=1, lin, col;
coada[1].l=romeol;
coada[1].c=romeoc;
while(inc<=sf){
for(i=0;i<4;i++){
lin=coada[inc].l+dirl[i];
col=coada[inc].c+dirc[i];
if(r[lin][col]==0){
sf++;
coada[sf].l=lin;
coada[sf].c=col;
r[lin][col]=r[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
sf=1, inc=1, lin, col;
coada[1].l=jull;
coada[1].c=julc;
while(inc<=sf){
for(i=0;i<4;i++){
lin=coada[inc].l+dirl[i];
col=coada[inc].c+dirc[i];
if(ju[lin][col]==0){
sf++;
coada[sf].l=lin;
coada[sf].c=col;
ju[lin][col]=ju[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if(r[i][j]==ju[i][j] && r[i][j]<tmin && r[i][j]!=0 && r[i][j]!=-1){
a=i;
b=j;
tmin=r[i][j];
}
}
}
out<<tmin<<" "<<a<<" "<<b;
return 0;
}