Pagini recente » Cod sursa (job #1042527) | Cod sursa (job #1487761) | Cod sursa (job #2568885) | Cod sursa (job #1484910) | Cod sursa (job #1725284)
#include <fstream>
#include <queue>
#include <string>
using namespace std;
ifstream g("rj.in");
ofstream gg("rj.out");
int di[8] = {1,0,-1,0,-1,1,1,-1};
int dj[8] = {1,1,1,-1,-1,0,-1,0};
int N,M,Map[105][105];
char c;
queue < pair <int, int> > coada;
void Read(){
g>> N >> M;
g.get(c);
for(int i = 1; i <= N ; i++)
{
int j=0;
while(g.get(c) && c != '\n')
{
j++;
if(c == ' ')
Map[i][j] = 0;
if(c == 'X')
Map[i][j] = -1;
if(c == 'R')
{
coada.push({i,j});
Map[i][j] = 1;
}
if(c == 'J')
{
coada.push({i,j});
Map[i][j] = 1;
}
}
}
}
bool OK(int i, int j){
if(i < 1 || j < 1 || i > N || j > N)
return false;
if(Map[i][j] == -1)
return false;
return true;
}
void Lee(){
int i,j,i_urmator,j_urmator;
while( !coada.empty() ){
i = coada.front().first;
j = coada.front().second;
coada.pop();
for(int directie=0; directie < 8; directie ++){
i_urmator = i + di[directie];
j_urmator = j + dj[directie];
if(OK(i_urmator,j_urmator) && Map[i_urmator][j_urmator] == 0){
Map[i_urmator][j_urmator] = Map[i][j] + 1;
coada.push({i_urmator,j_urmator});
}
}
}
gg<<Map[i][j]<<" "<<i<<" "<<j;
}
void Write(){
for(int i=1; i<=N; i++){
for(int j=1; j<=M; j++){
gg<<Map[i][j]<<" ";
}
gg<<"\n";
}
}
int main()
{
Read();
Lee();
// Write();
return 0;
}