Pagini recente » Cod sursa (job #2365965) | Cod sursa (job #1267278) | Cod sursa (job #296279) | Cod sursa (job #2863253) | Cod sursa (job #2376412)
/*
88 = X
82 = R
74 = J
32 = " "
*/
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int CMAX = 110;
char c[CMAX];
int harta[CMAX][CMAX] , N , M , i , j , k , s_i , s_j;
int drum_j[CMAX][CMAX] = {0} , drum_r[CMAX][CMAX] = {0};
int r_i , r_j , rr = 0 , oky , rp_i , rp_j;
// pas 1 - Romeo , pas 2 - Julieta
int dx[] = {-1 , -1 , -1 , 0 , 0 , +1 , +1 , +1};
int dy[] = {-1 , 0 , +1 , -1 , +1 , -1 , 0 , +1};
int minim = INT_MAX;
queue < pair < int , int > > Q; //drumul Romeo
queue < pair < int , int > > Q1; //drumul julieta
void afisare1()
{
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
if(drum_r[i][j]==-1)
cout << "X ";
else
cout << drum_r[i][j] << " ";
}
cout << endl;
}
}
void afisare2()
{
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
if(drum_j[i][j]==-1)
cout << "X ";
else
cout << drum_j[i][j] << " ";
}
cout << endl;
}
}
void citire()
{
fin >> N >> M;
fin.getline(c,CMAX);
for(i=1;i<=N;i++)
{
fin.getline(c,CMAX);
for(j=0;j<=M-1;j++)
{
harta[i][j+1] = (int)c[j];
if(harta[i][j+1]==32){
drum_j[i][j+1] = 0;
drum_r[i][j+1] = 0;
}
else{
drum_j[i][j+1] = -1;
drum_r[i][j+1] = -1;
}
if(harta[i][j+1]==82)
{
drum_r[i][j+1] = 1;
Q.push(make_pair(i,j+1));
}
if(harta[i][j+1]==74)
{
drum_j[i][j+1] = 1;
Q1.push(make_pair(i,j+1));
}
}
}
}
bool OK1(int cord_i , int cord_j)
{
if(cord_i<=0||cord_j<=0||cord_i>N||cord_j>M||drum_r[cord_i][cord_j]!=0)
return false;
return true;
}
bool OK2(int cord_i , int cord_j)
{
if(cord_i<=0||cord_j<=0||cord_i>N||cord_j>M||drum_j[cord_i][cord_j]!=0)
return false;
return true;
}
void lee()
{
int i_nou , j_nou;
while(!Q.empty())
{
for(k=0;k<=7;k++)
{
i_nou = Q.front().first + dx[k];
j_nou = Q.front().second + dy[k];
if(OK1(i_nou,j_nou)==true)
{
drum_r[i_nou][j_nou] = drum_r[Q.front().first][Q.front().second] + 1;
Q.push(make_pair(i_nou,j_nou));
}
}
Q.pop();
}
}
void lee1()
{
int i_nou , j_nou;
while(!Q1.empty())
{
for(k=0;k<=7;k++)
{
i_nou = Q1.front().first + dx[k];
j_nou = Q1.front().second + dy[k];
if(OK2(i_nou,j_nou)==true)
{
drum_j[i_nou][j_nou] = drum_j[Q1.front().first][Q1.front().second] + 1;
Q1.push(make_pair(i_nou,j_nou));
}
}
Q1.pop();
}
}
int main()
{
citire();
lee();
lee1();
afisare1();
cout << endl;
afisare2();
for(i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{
if(drum_r[i][j]!=-1&&drum_r[i][j]==drum_j[i][j]&&drum_r[i][j]!=0)
{
if(minim>drum_r[i][j])
{
minim = drum_r[i][j];
r_i = i;
r_j = j;
rr = drum_r[i][j];
}
}
}
}
fout << rr << " " << r_i << " " << r_j;
return 0;
}