Pagini recente » Cod sursa (job #2900393) | Cod sursa (job #2853452) | Cod sursa (job #2939273) | Cod sursa (job #2498823) | Cod sursa (job #2656003)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int mat[110][110],n,m,linr,linj,colr,colj,mat2[110][110],z,mi,linn,coll;
char t[500],ch[2];
int dl[]={-1, -1, 0, 1, 1, 1, 0, -1}, dc[]={0, 1, 1, 1, 0, -1, -1, -1};
struct poz
{
int l,c;
};
poz c[11000];
void Lee(int lin, int col)
{
int i,ultim,prim,ll,cc;
mat[lin][col]=1;
prim=1;
ultim=1;
c[1].l=lin;
c[1].c=col;
while (prim<=ultim)
{
lin=c[prim].l;
col=c[prim].c;
prim++;
for (i=0;i<=7;i++)
{
ll=lin+dl[i];
cc=col+dc[i];
if (mat[ll][cc]==0)
{
ultim++;
c[ultim].l=ll;
c[ultim].c=cc;
mat[ll][cc]=mat[lin][col]+1;
}
}
}
}
void Lee2 (int lin, int col)
{
int i,ultim,prim,ll,cc;
mat2[lin][col]=1;
prim=1;
ultim=1;
c[1].l=lin;
c[1].c=col;
while (prim<=ultim)
{
lin=c[prim].l;
col=c[prim].c;
prim++;
for (i=0;i<=7;i++)
{
ll=lin+dl[i];
cc=col+dc[i];
if (mat2[ll][cc]==0)
{
ultim++;
c[ultim].l=ll;
c[ultim].c=cc;
mat2[ll][cc]=mat2[lin][col]+1;
}
}
}
}
int main()
{
int i,j;
f>>n>>m;
m--;
f.getline (ch,2);
for (i=1;i<=n;i++)
{
f.getline (t,200);
for (j=0;j<=m;j++)
{
if (t[j]=='X') {mat[i][j+1]=-1;mat2[i][j+1]=-1;}
if (t[j]==' ') {mat[i][j+1]=0;mat2[i][j+1]=0;}
if (t[j]=='R') {linr=i;colr=j+1;mat[i][j+1]=0;mat2[i][j+1]=0;}
if (t[j]=='J') {linj=i;colj=j+1;mat[i][j+1]=0;mat2[i][j+1]=0;}
}
}
m++;
for (i=0;i<=n+1;i++)
{
mat2[i][0]=-1;
mat2[i][m+1]=-1;
mat[i][0]=-1;
mat[i][m+1]=-1;
}
for (i=0;i<=m+1;i++)
{
mat2[0][i]=-1;
mat2[n+1][i]=-1;
mat[0][i]=-1;
mat[n+1][i]=-1;
}
z=0;
//cout<<linr<<" "<<colr;
Lee (linr, colr);
/*for (i=1;i<=n;i++){
for (j=1;j<=m;j++) {
if (mat[i][j]==-1) cout<<-mat[i][j]<<" ";
else cout<<mat[i][j]<<" ";
}
cout<<"\n";
}
cout<<"\n\n";
*/
Lee2 (linj,colj);
/*for (i=1;i<=n;i++){
for (j=1;j<=m;j++) {
if (mat2[i][j]==-1) cout<<-mat2[i][j]<<" ";
else cout<<mat2[i][j]<<" ";
}
cout<<"\n";
}
*/
mi=1000;
for (i=1;i<=n;i++){
for (j=1;j<=m;j++)
if (mat[i][j]==mat2[i][j] && mat[i][j]!=-1 && mat[i][j]!=0) {if (mat[i][j]<mi) {mi=mat[i][j];linn=i;coll=j;} }
}
//cout<<mat[10][10];
//cout<<mat2[10][10];
g<<mi<<" "<<linn<<" "<<coll;
return 0;
}