Pagini recente » simulare__11_12_2003 | Cod sursa (job #703460) | Cod sursa (job #607513) | Cod sursa (job #713018) | Cod sursa (job #2490192)
#include <fstream>
#include<iostream>
#define INF 20000000
#define N 103
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct rj{
int x,y;
};
rj sr[N*N],sj[N*N];
int r[N][N],j[N][N],m,n;
const int lin[8]={1,-1,0,0,1,1,-1,-1};
const int col[8]={0,0,1,-1,1,-1,1,-1};
void leer(int x,int y){
for(int t=0;t<8;t++)
if(r[x+lin[t]][y+col[t]]==-2){
sr[++sr[0].x].x=x+lin[t];
sr[sr[0].x].y=y+col[t];
r[x+lin[t]][y+col[t]]=r[x][y]+1;
}
}
void leej(int x,int y){
for(int t=0;t<8;t++)
if(j[x+lin[t]][y+col[t]]==-2){
sj[++sj[0].x].x=x+lin[t];
sj[sj[0].x].y=y+col[t];
j[x+lin[t]][y+col[t]]=j[x][y]+1;
}
}
int main(){
int i,p,min=INF,x,y;
char c;
fin>>m>>n;
for (i=1;i<=m;++i)
{
for (p=1;p<=n+1;++p){
fin.get(c);
if (c=='R'){
sr[1].x=i;
sr[1].y=p;
r[i][p]=1;
j[i][p]=-2;
}
if (c=='J'){
sj[1].x=i;
sj[1].y=p;
r[i][p]=-2;
j[i][p]=1;
}
if (c=='X'){
r[i][p]=-1;
j[i][p]=-1;
}
if (c==' '){
r[i][p]=-2;
j[i][p]=-2;
}
}
}
sr[0].x=sj[0].x=1;
for(i=1;i<=sr[0].x;i++)
leer(sr[i].x,sr[i].y);
for(i=1;i<=sj[0].x;i++)
leej(sj[i].x,sj[i].y);
for(i=1;i<=m;i++)
for(p=1;p<=n;p++)
if(r[i][p]>0)
if(r[i][p]==j[i][p] && r[i][p]<min) {
min=r[i][p];
x=i;
y=p;
}
fout<<min<<" "<<x<<" "<<y-1;
return 0;
}