Pagini recente » Cod sursa (job #2872589) | Cod sursa (job #1917432) | Cod sursa (job #37263) | Cod sursa (job #362562) | Cod sursa (job #3129429)
#include <fstream>
#include <queue>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int d[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int r[101][101],jul[101][101],n,m;
struct ura
{
int lin,col;
};
queue <ura> q;
int einmat(ura x)
{
return x.lin>=1 && x.lin<=n && x.col>=1 && x.col<=m;
}
void lee(int mat[101][101])
{
while(!q.empty())
{
ura poz=q.front();
q.pop();
for(int dir=0;dir<8;dir++)
{
ura vecin;
vecin.lin=poz.lin+d[dir][0];
vecin.col=poz.col+d[dir][1];
if(einmat(vecin)==1 && mat[vecin.lin][vecin.col]==0)
{
q.push(vecin);
mat[vecin.lin][vecin.col]=mat[poz.lin][poz.col]+1;
}
}
}
}
int main()
{
ura str,stj;
in>>n>>m;
string row;
getline(in, row);
for(int i=1;i<=n;i++)
{
getline(in, row);
for(int j=1;j<=m;j++)
{
char c = row[j-1];
if(c==' ')
r[i][j]=jul[i][j]=0;
if(c=='X')
r[i][j]=jul[i][j]=-1;
if(c=='R')
{
r[i][j]=1;
str.lin=i;
str.col=j;
}
if(c=='J')
{
jul[i][j]=1;
stj.lin=i;
stj.col=j;
}
}
}
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
out<<jul[i][j]<<" ";
out<<'\n';
}*/
q.push(str);
lee(r);
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
out<<r[i][j]<<" ";
out<<'\n';
}*/
q.push(stj);
lee(jul);
int mini=100001,pozi,pozj;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(r[i][j]==jul[i][j])
if(mini>r[i][j] && r[i][j]>1)
{
mini=r[i][j];
pozi=i;
pozj=j;
}
}
out<<mini<<" "<<pozi<<" "<<pozj<<'\n';
return 0;
}