Pagini recente » Cod sursa (job #3130794) | Cod sursa (job #422004) | Cod sursa (job #2047119) | Cod sursa (job #1243061) | Cod sursa (job #1376517)
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
queue<int>qx;
queue<int>qy;
int r[150][150],ju[150][150];
void sub(int x,int y,int nr,int v[150][150])
{if(qx.empty()==true)return;
nr=v[x][y]+1;
if(v[x+1][y]==0){qx.push(x+1);
qy.push(y);
v[x+1][y]=nr;}
if(v[x-1][y]==0){qx.push(x-1);
qy.push(y);
v[x-1][y]=nr;}
if(v[x][y+1]==0){qx.push(x);
qy.push(y+1);
v[x][y+1]=nr;}
if(v[x][y-1]==0){qx.push(x);
qy.push(y-1);
v[x][y-1]=nr;}
if(v[x+1][y+1]==0){qx.push(x+1);
qy.push(y+1);
v[x+1][y+1]=nr;}
if(v[x+1][y-1]==0){qx.push(x+1);
qy.push(y-1);
v[x+1][y-1]=nr;}
if(v[x-1][y-1]==0){qx.push(x-1);
qy.push(y-1);
v[x-1][y-1]=nr;}
if(v[x-1][y+1]==0){qx.push(x-1);
qy.push(y+1);
v[x-1][y+1]=nr;}
qx.pop();
qy.pop();
sub(qx.front(),qy.front(),nr,v);
}
int main()
{int n,m,i,j,x1,y1,x2,y2;
char s[150];
f>>n>>m;
for(i=0;i<=n+1;i++){r[i][0]=-2;
ju[i][0]=-2;}
for(i=0;i<=n+1;i++){r[i][m+1]=-2;
ju[i][m+1]=-2;}
for(i=0;i<=m+1;i++){r[0][i]=-2;
ju[0][i]=-2;}
for(i=0;i<=m+1;i++){r[n+1][i]=-2;
ju[n+1][i]=-2;}
for(i=1;i<=n;i++){f.get();
f.get(s,150);
for(j=1;j<=m;j++){if(s[j-1]=='X'){r[i][j]=-2;
ju[i][j]=-2;}
if(s[j-1]=='R'){r[i][j]=1;
ju[i][j]=1;
x1=i;
y1=j;}
if(s[j-1]=='J'){r[i][j]=1;
ju[i][j]=1;
x2=i;
y2=j;}
}
}
qx.push(x1);
qy.push(y1);
sub(x1,y1,0,r);
qx.push(x2);
qy.push(y2);
sub(x2,y2,0,ju);
int min=110;
r[x1][y1]=-1;
r[x2][y2]=-1;
ju[x1][y1]=-1;
ju[x2][y2]=-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)if(r[i][j]==ju[i][j])if(min>r[i][j] && r[i][j]>0){min=r[i][j];
x1=i;
y1=j;}
//for(i=1;i<=n;i++){g<<endl;
// for(j=1;j<=m;j++)g<<" "<<ju[i][j];}
g<<min<<" "<<x1<<" "<<y1;
return 0;}