Pagini recente » Cod sursa (job #1156213) | Cod sursa (job #99335) | Cod sursa (job #747178) | Cod sursa (job #1162723) | Cod sursa (job #1813172)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct poz{
int l,c;
};
poz c1[10201],c2[10201];
int nrmin;
//poz pozitie;
int n,m,i,j,xfj,yfj,xfr,yfr;
int dx[8] = { 0, 1, 1, 1, 0, -1, -1, -1 };
int dy[8] = { 1, 1, 0, -1, -1, -1, 0, 1 };
int /*a[103][103]*/a[103][103],b[103][103],c[103][103];
void bordare ()
{
for(i=0;i<=n+1;i++)
{ a[i][0]=-1;
a[i][n+1]=-1;
}
for(j=0;j<=m+1;j++)
{ a[j][0]=-1;
a[j][m+1]=-1;
}
}
void lee ()
{
int inr=1;
int sfr=1;
int inj=1;
int sfj=1;
c1[1].l=xfr;
c1[1].c=yfr;
int currl,currc;
b[xfr][yfr]=1;
while(inr<=sfr)
{
currl=c1[inr].l;currc=c1[inr].c;
for(int k=0;k<8;k++)
if(a[currl+dx[k]][currc+dy[k]]==0&&b[currl+dx[k]][currc+dy[k]]==0)
{
b[currl+dx[k]][currc+dy[k]]=b[currl][currc]+1;
sfr++;
c1[sfr].l=currl+dx[k];
c1[sfr].c=currc+dy[k];
}
inr++;
}
c2[1].l=xfj;
c2[1].c=yfj;
c[xfj][yfj]=1;
//int currl,currc;
while(inj<=sfj)
{
currl=c2[inj].l;currc=c2[inj].c;
for(int k=0;k<8;k++)
if(a[currl+dx[k]][currc+dy[k]]==0&&c[currl+dx[k]][currc+dy[k]]==0)
{
c[currl+dx[k]][currc+dy[k]]=c[currl][currc]+1;
sfj++;
c2[sfj].l=currl+dx[k];
c2[sfj].c=currc+dy[k];
}
inj++;
}
}
int main()
{
char x;
f>>n>>m;
f>>noskipws>>x;
i=1;j=1;
while(f>>noskipws>>x)
{
if(x=='\n')
{
i++;j=1;
}
else
{
if(x=='R')
{
xfr=i;
yfr=j;
a[i][j]=1;
}
else
if(x=='J')
{
xfj=i;
yfj=j;
a[i][j]=2;
}
else
if(x=='X')
{
a[i][j]=-1;
//a2[i][j]=-1;
}
j++;
}
}
bordare();
lee();
///g<<b[xfj][yfj]<<'\n';
///g<<c[xfr][yfr];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(b[i][j]==c[i][j]&&b[i][j]!=0)
g<<b[i][j]<<" "<<i<<" "<<j;
//g<<'\n';
}
return 0;
}