Pagini recente » Cod sursa (job #2929969) | Cod sursa (job #2743190) | Cod sursa (job #2284450) | Cod sursa (job #2532789) | Cod sursa (job #1374697)
#include <fstream>
#include<queue>
#define N 105
#define punct pair<int,int>
#define x first
#define y second
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,ro[N][N],ju[N][N],a,b,mini;
char x[N];
const int DX[]={0,0,1,1,1,-1,-1,-1};
const int DY[]={1,-1,0,-1,1,-1,0,1};
punct startr,startj,now,nxt;
queue<punct> Q;
bool verif(punct z)
{
if(z.x>0 && z.x<=n &&z.y>0 && z.y<=m)
return 1;
return 0;
}
void lee(punct start,int a[N][N])
{
Q.push(start);
a[start.x][start.y]=1;
while(!Q.empty())
{
now=Q.front();
for(i=0;i<8;i++)
{
nxt.x=now.x+DX[i];
nxt.y=now.y+DY[i];
if(a[nxt.x][nxt.y]==0 && verif(nxt)==1)
{
a[nxt.x][nxt.y]= a[now.x][now.y]+1;
Q.push(nxt);
}
}
Q.pop();
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin.get();
fin.get(x,105);
for(j=1;j<=m;j++)
{
if(x[j-1]=='X')
ro[i][j]=ju[i][j]=-1;
if(x[j-1]=='R')
{
ro[i][j]=1;
startr=make_pair(i,j);
}
if(x[j-1]=='J')
{
ju[i][j]=1;
startj=make_pair(i,j);
}
}
}
lee(startr,ro);
lee(startj,ju);
mini=1000000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(ro[i][j]==ju[i][j] && ro[i][j]>0 && mini>ro[i][j])
{
mini=ro[i][j];
a=i;
b=j;
}
fout<<mini<<" "<<a<<" "<<b;
return 0;
}