Pagini recente » Cod sursa (job #3279480) | Cod sursa (job #863134) | Cod sursa (job #1356214) | Cod sursa (job #1226125) | Cod sursa (job #1378903)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
char a[102][102];
int d[102][102], d2[102][102];
const int dlin[]= {1,-1,0,0,-1,-1,1,1};
const int dcol[]= {0,0,-1,1,-1,1,-1,1};
const int n=101, m=101;
struct poz
{
short int lin, col;
};
poz q[n*m];
/*void lee(x)
{
poz x,y;
int p=0, u=-1;
q[++u]=x;
d[x.lin][x.col]=1;
while (p<=u)
{
x=q[p++];
for(int i=0; i<8; i++)
{
y.lin=x.lin+dlin[i];
y.col=x.col+dcol[i];
if(d[y.lin][y.col]==0)
{
q[++u]=y;
d[y.lin][y.col]=1+d[x.lin][x.col];
}
}
}
}*/
int main()
{
int n,m;
poz x, y;
f>>n>>m>>ws;
for(int i=1; i<=n; i++)
{
f.getline(1+a[i],101);
// g << 1+a[i] << "\n";
}
for(int i=0; i<=n+1; i++)
d[i][0] = d[i][m+1] = -1;
for (int j=0; j<=m+1; j++)
d[0][j] = d[n+1][j] = -1;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
if(a[i][j]=='X') d[i][j]=-1;
else if(a[i][j]=='R')
{
x.lin=i;
x.col=j;
}
else if(a[i][j]=='J')
{
y.lin=i;
y.col=j;
}
}
// poz x,y;
int p=0, u=-1;
q[++u]=x;
d[x.lin][x.col]=1;
while (p<=u)
{
x=q[p++];
for(int i=0; i<8; i++)
{
y.lin=x.lin+dlin[i];
y.col=x.col+dcol[i];
if(d[y.lin][y.col]==0)
{
q[++u]=y;
d[y.lin][y.col]=1+d[x.lin][x.col];
}
}
}
// lee(x);
//g<<d[y.lin][y.col];
for(int i=0; i<=n+1; i++)
d2[i][0] = d2[i][m+1] = -1;
for (int j=0; j<=m+1; j++)
d2[0][j] = d2[n+1][j] = -1;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
if(a[i][j]=='X') d2[i][j]=-1;
else if(a[i][j]=='R')
{
y.lin=i;
y.col=j;
}
else if(a[i][j]=='J')
{
x.lin=i;
x.col=j;
}
}
p=0, u=-1;
q[++u]=x;
d2[x.lin][x.col]=1;
while (p<=u)
{
x=q[p++];
for(int i=0; i<8; i++)
{
y.lin=x.lin+dlin[i];
y.col=x.col+dcol[i];
if(d2[y.lin][y.col]==0)
{
q[++u]=y;
d2[y.lin][y.col]=1+d2[x.lin][x.col];
}
}
}
for(int i=0; i<=n+1; i++)
{
for(int j=0; j<=m+1; j++)
if(d[i][j]==d2[i][j]&&d[i][j]!=-1&&d[i][j]!=0) g<<d[i][j]<<" "<<i<<" "<<j;
//g<<"\n";
}
/*for(int i=0;i<=n+1;i++)
{
for(int j=0;j<=m+1;j++)
g<<d[i][j]<<" ";
g<<"\n";
}*/
return 0;
}