Pagini recente » Istoria paginii utilizator/uaic_babuta_iacob_pescaru | Cod sursa (job #1503401) | Clasament oni_2014_cls_10_ziua_1 | Istoria paginii runda/simulare-cartita-35/clasament | Cod sursa (job #2537426)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
#define baza 256
#define obs -1
queue <int>coada ;
int n,m,i,j,lr,cr,lj,cj,mini,lrasp,crasp;
char x;
short a[101][101],romeo[101][101],julieta[101][101];
int dl[]= {0,-1,-1,-1,0, 1,1,1};
int dc[]= {1, 1, 0,-1,-1,-1,0,1};
int lee(int lin,int col, short dist[101][101])
{
int d,l,c,i;
dist[lin][col]=1;
coada.push(lin*baza+col);
do
{
l=coada.front()/baza;
c=coada.front()%baza;
coada.pop();
d=dist[l][c];
for(i=0; i<8; i++)
{
if(a[l+dl[i]][c+dc[i]]==0&&dist[l+dl[i]][c+dc[i]]==0)
{
coada.push((l+dl[i])*baza+c+dc[i]);
dist[l+dl[i]][c+dc[i]]=d+1;
}
}
}
while(coada.empty()==false);
}
int main()
{
fin>>n>>m;
fin.get(); for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
fin.get(x);
if(x=='X') a[i][j]=obs;
else if(x=='R')
{
lr=i;
cr=j;
a[i][j]=0;
}
else if(x=='J')
{
lj=i;
cj=j;
a[i][j]=0;
}
}
if(x!='\n') fin.get();
}
for(i=0; i<=n+1; i++) a[i][0]=a[i][m+1]=obs;
for(i=0; i<=m+1; i++) a[0][i]=a[n+1][i]=obs;
lee(lr,cr,romeo);
lee(lj,cj,julieta);
mini=1000000000;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(romeo[i][j]==julieta[i][j]&&romeo[i][j]>0&&romeo[i][j]<mini)
{
mini=romeo[i][j];
lrasp=i;
crasp=j;
}
}
}
fout<<mini<<" "<<lrasp<<" "<<crasp;
return 0;
}