Pagini recente » Cod sursa (job #2341428) | Cod sursa (job #1525107) | Cod sursa (job #2096193) | Cod sursa (job #2359599) | Cod sursa (job #2245638)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int r[105][105]= {{0},{0}},ju[105][105]= {{0},{0}},m,n,mn=100000,i,j,p=0,u=0,lin,col,x,romlin,romcol,jullin,julcol;
char a;
struct
coada
{
int lin,col;
} c[11025];
int main()
{
f>>m>>n;
for(i=1; i<=m; i++)
{
f>>noskipws>>a;
for(j=1; j<=n; j++)
{
f>>noskipws>>a;
if(a=='X')r[i][j]=ju[i][j]=-1;
else if(a=='R')r[i][j]=1,romlin=i,romcol=j;
else if(a=='J')ju[i][j]=1,jullin=i,julcol=j;
else r[i][j]=ju[i][j]=0;
}
}
for(i=0; i<=m+1; i++)
{
r[i][0]=ju[i][0]=-1;
r[i][n+1]=ju[i][n+1]=-1;
}
for(j=0; j<=n+1; j++)
{
r[0][j]=ju[0][j]=-1;
r[m+1][j]=ju[m+1][j]=-1;
}
c[0].lin=romlin;
c[0].col=romcol;
while(p<=u)
{
lin=c[p].lin;
col=c[p].col;
x=r[lin][col];
if(r[lin-1][col]==0)
{
r[lin-1][col]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col;
}
if(r[lin][col+1]==0)
{
r[lin][col+1]=x+1;
u++;
c[u].lin=lin;
c[u].col=col+1;
}
if(r[lin+1][col]==0)
{
r[lin+1][col]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col;
}
if(r[lin][col-1]==0)
{
r[lin][col-1]=x+1;
u++;
c[u].lin=lin;
c[u].col=col-1;
}
if(r[lin-1][col+1]==0)
{
r[lin-1][col+1]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col+1;
}
if(r[lin+1][col+1]==0)
{
r[lin+1][col+1]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col+1;
}
if(r[lin+1][col-1]==0)
{
r[lin+1][col-1]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col-1;
}
if(r[lin-1][col-1]==0)
{
r[lin-1][col-1]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col-1;
}
p++;
}
p=0;
u=0;
c[0].lin=jullin;
c[0].col=julcol;
while(p<=u)
{
lin=c[p].lin;
col=c[p].col;
x=ju[lin][col];
if(ju[lin-1][col]==0)
{
ju[lin-1][col]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col;
}
if(ju[lin][col+1]==0)
{
ju[lin][col+1]=x+1;
u++;
c[0].lin=jullin;
c[u].lin=lin;
c[u].col=col+1;
}
if(ju[lin+1][col]==0)
{
ju[lin+1][col]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col;
}
if(ju[lin][col-1]==0)
{
ju[lin][col-1]=x+1;
u++;
c[u].lin=lin;
c[u].col=col-1;
}
if(ju[lin-1][col+1]==0)
{
ju[lin-1][col+1]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col+1;
}
if(ju[lin+1][col+1]==0)
{
ju[lin+1][col+1]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col+1;
}
if(ju[lin+1][col-1]==0)
{
ju[lin+1][col-1]=x+1;
u++;
c[u].lin=lin+1;
c[u].col=col-1;
}
if(ju[lin-1][col-1]==0)
{
ju[lin-1][col-1]=x+1;
u++;
c[u].lin=lin-1;
c[u].col=col-1;
}
p++;
}
for(i=1; i<=m; i++)
for(j=1; j<=n; j++)
{
p=r[i][j];
if(p==ju[i][j]&&p>0&&p<mn)lin=i,col=j,mn=p;
}
g<<mn<<' '<<lin<<' '<<col;
f.close();
g.close();
}