Pagini recente » Cod sursa (job #2748448) | Cod sursa (job #189824) | Cod sursa (job #2736976) | Cod sursa (job #1761208) | Cod sursa (job #2952800)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
int a[1005][1005],b[1005][1005], i , j , n , m ;
int dl[]= {-1,0,1,0,-1,1,1,-1},dc[]= {0,1,0,-1,1,-1,1,-1};
struct pozitie
{
int lin,col;
};
queue <pozitie> c;
pozitie R,J;
void citire()
{
char x;
int i,j;
cin >> n >> m;
for( i = 1 ; i <= n ; i ++ )
{
cin.get() ;
for( j = 1 ; j <= m; j++)
{
cin.get(x);
if(x==' ')/// marcam cu 0
{
a[i][j]=0 ;
b[i][j]=0;
}
if(x=='X')/// marcam cu 1 si -1 pe b[i][j]
{
a[i][j] = 1 ;
b[i][j]=-1;
}
if(x=='R')
{
a[i][j] = 1 ;
R.lin = i ;
R.col = j ;
}
if(x=='J')
{
b[i][j] = 1 ;
J.lin = i ;
J.col = j ;
}
}
}
}
void lee(int lin,int col,int a[1005][1005])
{
pozitie poz1,poz2;
c.push({lin,col});
while(!c.empty())
{
poz1=c.front();
c.pop();
for(int i = 0 ; i < 8 ; i ++ )
{
poz2.lin=poz1.lin+dl[i];
poz2.col=poz1.col+dc[i];
if(poz2.lin>=1 && poz2.lin<=n && poz2.col>=1 && poz2.col<=m && a[poz2.lin][poz2.col]==0)
{
a[poz2.lin][poz2.col] = a[poz1.lin][poz1.col] +1 ;
c.push(poz2);
}
}
}
}
void afisare(int a[1005][1005])
{
for( i = 1 ; i <= n ; i ++ )
{
for( j = 1 ; j <= m ; j ++ )
cout<<a[i][j]<<" ";
cout<<"\n";
}
}
int main()
{
int jj,ii;
int mini=100000003;
citire();
lee(R.lin,R.col,a);
lee(J.lin,J.col,b);
for( i = 1 ; i <= n ; i ++ )
for( j = 1 ; j <= m ; j ++ )
if(a[i][j]==b[i][j] && a[i][j] > 0 && a[i][j] < mini )
{
ii = i ;
jj = j ;
mini = a[i][j] ;
}
cout<<mini<<" "<<ii<<" "<<jj;
return 0;
}