Pagini recente » Cod sursa (job #1414761) | Cod sursa (job #408493) | Cod sursa (job #774719) | Cod sursa (job #727705) | Cod sursa (job #2207993)
#include <fstream>
#include <queue>
using namespace std;
int cs[8] = {-1, 1, 0, 0, 1, 1, -1, -1};
int cd[8] = {0, 0, 1, -1, -1, 1, -1, 1};
char rj[102][102];
int n, m;
void Lee(pair<int, int> r, int d[][101])
{
queue < pair <int, int> > C;
pair<int, int> t;
C.push(r);
d[r.first][r.second]=1;
int i;
while(!C.empty())
{
t=C.front();
for(i=0;i<=7;i++)
if(d[t.first+cs[i]][t.second+cd[i]]==0 && rj[t.first+cs[i]][t.second+cd[i]]!='X' && (t.first+cs[i]>=1 && t.first+cs[i]<=n) &&(t.second+cd[i]>=1 && t.second+cd[i]<=m))
{
d[t.first+cs[i]][t.second+cd[i]]=d[t.first][t.second]+1;
C.push(pair<int,int>(t.first+cs[i],t.second+cd[i]));
}
C.pop();
}
}
int main()
{
int i,k;
pair <int, int> r,j;
ifstream fin("rj.in");
ofstream out("rj.out");
fin >> n >> m;
fin.get();
for (i=1; i<=n; i++)
{
for(k=1; k<=m; k++)
{
fin.get(rj[i][k]);
if (rj[i][k]=='R')
{
r.first=i;
r.second=k;
rj[i][k]=' ';
}
if (rj[i][k]=='J')
{
j.first=i;
j.second=k;
rj[i][k]=' ';
}
}
fin.get();
}
int ro[101][101], jul[101][101];
for (i=1;i<=n;i++)
for (k=1;k<=m;k++)
{
ro[i][k]=0;
jul[i][k]=0;
}
Lee(r, ro);
Lee(j, jul);
int tmin=101;
for (i=1;i<=n;i++)
for(k=1;k<=m;k++)
if (ro[k][i]==jul[k][i] && ro[k][i]<tmin && ro[k][i]!=0)
{
r.first=k;
r.second=i;
tmin=ro[k][i];
}
out<< tmin << " " << r.first << " " << r.second;
return 0;
}