Pagini recente » Cod sursa (job #128871) | Cod sursa (job #2331758) | Cod sursa (job #965197) | Cod sursa (job #2569158) | Cod sursa (job #1996226)
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int a[105][105],n,m,x,y,k,r[105][105],jj[105][105],tmin=105*105,imin,jmin;
char c[101];
struct pozitie
{
int i,j;
};
pozitie coada[101*101],startr,stopr,urm,dir[8]={0,1,1,0,0,-1,-1,0,1,1,1,-1,-1,1,-1,-1},startj,stopj;
void bordare()
{
for(int i=0;i<=n+1;i++)
a[i][0]=r[i][0]=jj[i][0]=a[i][m+1]=r[i][m+1]=jj[i][m+1]=-1;
for(int j=0;j<=m+1;j++)
a[0][j]=r[0][j]=jj[0][j]=a[n+1][j]=r[n+1][j]=jj[n+1][j]=-1;
}
void afis()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) out<<setw(3)<<jj[i][j];
out<<endl;
}
out<<endl;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) out<<setw(3)<<r[i][j];
out<<endl;
}
}
void leer()
{
coada[1]=startr;
int kout=1,kin=1;
while(kout<=kin)
{
x=coada[kout].i;
y=coada[kout].j;
for(int i=0;i<8;i++)
{
urm.i=coada[kout].i+dir[i].i;
urm.j=coada[kout].j+dir[i].j;
if(r[urm.i][urm.j]==0)
{
coada[++kin]=urm;
r[urm.i][urm.j]=r[coada[kout].i][coada[kout].j]+1;
}
}
kout++;
}
}
void leej()
{
coada[1]=startj;
int kout=1,kin=1;
while(kout<=kin)
{
x=coada[kout].i;
y=coada[kout].j;
for(int i=0;i<8;i++)
{
urm.i=coada[kout].i+dir[i].i;
urm.j=coada[kout].j+dir[i].j;
if(jj[urm.i][urm.j]==0)
{
coada[++kin]=urm;
jj[urm.i][urm.j]=jj[coada[kout].i][coada[kout].j]+1;
}
}
kout++;
}
}
int main()
{ in>>n>>m;
for(int i=1;i<=n;i++)
{in.get();
int j=1;
in.get(c,101);
for(k=0;k<strlen(c);k++)
{if(c[k]==' ') {a[i][j]=0;r[i][j]=0;jj[i][j]=0;}
else if(c[k]==88) {a[i][j]=-1;r[i][j]=-1;jj[i][j]=-1;}
else if(c[k]==82) {startr.i=i;startr.j=j;r[i][j]=1;}
else {startj.i=i;startj.j=j;jj[i][j]=1;}
j++;
}
}
//out<<startr.i<<" "<<startr.j<<" "<<startj.i<<" "<<startj.j<<" ";
//out<<endl;
bordare();
leer();
leej();
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(r[i][j]==jj[i][j])
{
if(r[i][j]<tmin && r[i][j]!=-1 && r[i][j]!=0) {tmin=r[i][j];imin=i;jmin=j;}
}
out<<tmin<<" "<<imin<<" "<<jmin;
//afis();
return 0;
}