Pagini recente » Cod sursa (job #2751847) | Cod sursa (job #1598227) | Cod sursa (job #1307781) | Cod sursa (job #823681) | Cod sursa (job #548641)
Cod sursa(job #548641)
#include<fstream>
#define DN 102
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n, m, xr, yr, xj, yj, x[8]={0, 1, 0, -1, -1, 1, -1, 1}, y[8]={1, 0, -1, 0, -1, 1, 1,-1}, r[DN][DN];
char drum[DN][DN];
struct Romeo
{
int c1, c2;
}
C[DN*DN], p;
void parcurge (int x0, int y0, int a[DN][DN])
{
int inc=0, sf=0, i, k;
for (i=0; i<=n+1; i++)
for (k=0; k<=m+1; k++)
a[i][k]=-1;
C[0].c1=x0; C[0].c2=y0; a[x0][y0]=1;
while (inc<=sf)
{
p=C[inc++];
for (i=0; i<8; i++)
if (drum[p.c1+x[i]][p.c2+y[i]]==' ' && a[p.c1+x[i]][p.c2+y[i]]==-1)
{
a[p.c1+x[i]][p.c2+y[i]]=1+a[p.c1][p.c2];
C[++sf].c1=p.c1+x[i];
C[sf].c2=p.c2+y[i];
}
}
}
int main()
{
int j[DN][DN];
//citire
int i, k, tmin=DN*DN+5, xmin=-1, ymin=-1;
char c;
f>>n>>m;
for (i=0; i<=n+1; i++)
drum[i][0]=drum[i][m+1]='X';
for (i=0; i<=m+1; i++)
drum[0][i]=drum[n+1][i]='X';
f.get(c);
for (i=1; i<=n; i++)
{
for (k=1; k<=m; k++)
{
f.get(c); drum[i][k]=c;
if (drum[i][k]=='R')
{
xr=i;
yr=k;
drum[i][k]=' ';
}
if (drum[i][k]=='J')
{
xj=i;
yj=k;
drum[i][k]=' ';
}
}
f.get(c);
}
//parcurgere
parcurge(xr, yr, r);
parcurge(xj, yj, j);
//afisare
for (i=1; i<=n; i++)
for (k=1; k<=m; k++)
if (r[i][k]==j[i][k])
if (r[i][k]<tmin && r[i][k]!=-1)
{
tmin=r[i][k]; xmin=i; ymin=k;
}
g<<tmin<<' '<<xmin<<' '<<ymin<<"\n";
f.close();
g.close();
return 0;
}