Pagini recente » Cod sursa (job #354791) | Cod sursa (job #985372) | Cod sursa (job #2652912) | Cod sursa (job #2672272) | Cod sursa (job #1138377)
#include <iostream>
#include <fstream>
#include <string.h>
#define MXMX 10003
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,a[102][102],b[102][102],prim,ultim, mx,linie,coloana,k,x[]={-1,0,1,0,-1,-1,1,1},y[]={0,1,0,-1,-1,1,1,-1},l1,l2,c1,c2;
char s[103];
struct coada
{
int lin, col;
}v,p,c[10001],p1;
int main ()
{
mx=MXMX;
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.get(s,103);
fin.get();
for(j=0;j<m;j++)
{
if(s[j]=='X')
{
a[i][j+1]=-1;
b[i][j+1]=-1;
}
else if(s[j]==' ')
{
a[i][j+1]=0;
b[i][j+1]=0;
}
else if(s[j]=='R'||s[j]=='J')
{
if(s[j]=='R')
{
p.lin=l1=i;
p.col=c1=j+1;
a[i][j+1]=1;
}
else
{
p1.lin=l2=i;
p1.col=c2=j+1;
b[i][j+1]=1;
}
}
}
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=b[0][i]=b[n+1][i]=-1;
c[0]=p;
while(prim<=ultim)
{
p=c[prim];
prim++;
for(k=0;k<8;k++)
{
v.lin=p.lin+x[k];
v.col=p.col+y[k];
if(a[v.lin][v.col]==0)
{
a[v.lin][v.col]=a[p.lin][p.col]+1;
ultim++;
c[ultim]=v;
}
}
}
prim=ultim=0;
c[0]=p1;
while(prim<=ultim)
{
p1=c[prim];
prim++;
for (k=0;k<8;k++)
{
v.lin=p1.lin+x[k];
v.col=p1.col+y[k];
if (b[v.lin][v.col]==0)
{
b[v.lin][v.col]=b[p1.lin][p1.col]+1;
ultim++;
c[ultim]=v;
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]!=-1 && a[i][j]<mx && a[i][j]!=0)
{
mx=a[i][j];
linie=i;
coloana=j;
}
fout<<mx<<" "<<linie<<" "<<coloana;
return 0;
}