Pagini recente » Cod sursa (job #2002192) | Cod sursa (job #2008489) | Cod sursa (job #2852556) | Istoria paginii runda/baraj-shumen-seniori-2022-ichb-vianu/clasament | Cod sursa (job #3153556)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,matRomeo[105][105], matJulieta[105][105];
int dir[8][2]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
struct coord{
int lin, col;
};
coord rom,jul;
queue <coord> q;
bool InMat(coord vec){
return vec.lin>0 && vec.col>0 && vec.lin<=n && vec.col<=m;
}
void lee(int mat[105][105],coord st){
q.push(st);
while(!q.empty()){
coord curent=q.front();
q.pop();
for(int d=0;d<8;d++){
coord vecin=curent;
vecin.lin+=dir[d][0];
vecin.col+=dir[d][1];
if(InMat(vecin) && mat[vecin.lin][vecin.col]==0){
mat[vecin.lin][vecin.col]=mat[curent.lin][curent.col]+1;
q.push(vecin);
}
}
}
}
int main()
{
int timp,lin_rasp,col_rasp;
fin>>n>>m;
string lin;
getline(fin, lin);
for(int i=1;i<=n;i++) {
getline(fin, lin);
for(int j=1;j<=m;j++){
char ch = lin[j-1];
if(ch==' '){
matRomeo[i][j]=0;
matJulieta[i][j]=0;
}
else if(ch=='X'){
matRomeo[i][j]=-1;
matJulieta[i][j]=-1;
}
else if(ch=='R'){
matRomeo[i][j]=1;
rom.lin=i; rom.col=j;
}
else if(ch=='J'){
matJulieta[i][j]=1;
jul.lin=i; jul.col=j;
}
}
}
lee(matRomeo,rom);
lee(matJulieta,jul);
///
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
fout<<matJulieta[i][j]<<' ';
fout<<'\n';
}
fout<<'\n';
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
fout<<matRomeo[i][j]<<' ';
fout<<'\n';
}
fout<<'\n';
///
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
if(matRomeo[i][j]==matJulieta[i][j] && matRomeo[i][j]!=-1){
timp=i; lin_rasp=i; col_rasp=j;
}
}
cout<<timp<<' '<<lin_rasp<<' '<<col_rasp;
return 0;
}