Pagini recente » Cod sursa (job #1827227) | Cod sursa (job #905965) | Cod sursa (job #600648) | Cod sursa (job #67135) | Cod sursa (job #2696460)
#include <fstream>
#include <queue>
using namespace std;
int mat[105][105],mat1[3][105][105];
queue<int>lin;
queue<int>col;
int dlin[10]={-1,-1,0,1,1,1,0,-1};
int dcol[10]={0,1,1,1,0,-1,-1,-1};
void Lee(int nr)
{
while(!lin.empty())
{
int i=lin.front(),j=col.front();
for(int k=0;k<8;k++)
{
int i1=i+dlin[k],j1=j+dcol[k];
if(mat[i1][j1]==0&&mat1[nr][i1][j1]==0)
{
mat1[nr][i1][j1]=mat1[nr][i][j]+1;
lin.push(i1);
col.push(j1);
}
}
lin.pop();
col.pop();
}
}
int main()
{
ifstream fin("rj.in");
ofstream fout("rj.out");
string s;
int n,m,p1,p2,p3,p4;
fin>>n>>m;
getline(fin,s);
for(int i=1;i<=n;i++)
{
getline(fin,s);
for(int j=1;j<=s.size();j++)
{
if(s[j-1]==' ')
{
mat[i][j]=0;
}
else if(s[j-1]=='X')
{
mat[i][j]=1;
}
else if(s[j-1]=='R')
{
p1=i;p2=j;
mat1[0][i][j]=1;
}
else if(s[j-1]=='J')
{
p3=i;p4=j;
mat1[1][i][j]=1;
}
}
}
for(int i=0;i<=n+1;i++)
{
mat[i][0]=mat[i][m+1]=1;
}
for(int i=0;i<=m+1;i++)
{
mat[0][i]=mat[n+1][i]=1;
}
lin.push(p1);col.push(p2);
Lee(0);
lin.push(p3);col.push(p4);
Lee(1);
int l,c,tmin=2100000000;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(mat1[0][i][j]!=0&&mat1[1][i][j]!=0&&mat1[0][i][j]==mat1[1][i][j])
{
if(mat1[0][i][j]<tmin)
{
l=i;c=j;
tmin=mat1[0][i][j];
}
}
}
}
fout<<tmin<<" "<<l<<" "<<c<<'\n';
return 0;
}