Cod sursa(job #2749777)

Utilizator ana_madalina_18Radu Ana Madalina ana_madalina_18 Data 8 mai 2021 10:20:21
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.69 kb
#include <fstream>
#include <queue>
using namespace std;
int n, m,p,u;
char mat[105][105];
int rom[105][105], jul[105][105],dist=1;
struct val_lee
{
    int lin,col;
};
queue <val_lee> q;
int di[10]={0,0,1,1,1,-1,-1,-1}, dj[10]={-1,1,-1,0,1,-1,0,1};
bool verif(int nlin,int ncol)
{
  if(nlin<=n && nlin>0 && ncol<=m && ncol>0)
    return 1;
  else
    return 0;
}
void lee(int lin, int col, int v[105][105])
{
   val_lee pozitie_initiala;
   pozitie_initiala.lin=lin;
   pozitie_initiala.col=col;
   q.push(pozitie_initiala);
   val_lee curent;
   while(q.size())
   {
        curent=q.front();
        for(int i=0;i<8;i++)
        {
            int nlin,ncol;
            nlin=curent.lin+di[i];
            ncol=curent.col+dj[i];
            if(verif(nlin,ncol) && v[nlin][ncol]==0)
            {
                v[nlin][ncol]=v[curent.lin][curent.col]+1;
                val_lee vecin;
                vecin.lin=nlin;
                vecin.col=ncol;
                q.push(vecin);
            }

        }
        q.pop();
   }
}
int main()
{
    ifstream fin("rj.in");
    ofstream fout("rj.out");
    fin>>n>>m;
    fin>>noskipws;
    char white_space;
    fin>>white_space;
    int i, j,rom_lin,rom_col,jul_lin,jul_col;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {

            fin>>mat[i][j];
            if(mat[i][j]=='R')
            {
                rom[i][j]=1;
                rom_lin=i;
                rom_col=j;
            }
            else if(mat[i][j]=='X')
            {
                rom[i][j]=-1;
                jul[i][j]=-1;
            }
            else if(mat[i][j]=='J')
            {
                jul[i][j]=1;
                jul_lin=i;
                jul_col=j;
            }
        }

        fin>>white_space;
    }

/*for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            fout<<jul[i][j]<<' ';
        }
        fout<<endl;
    }
    fout<<'\n';*/
    lee(rom_lin,rom_col,rom);
    /*for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            fout<<rom[i][j]<<' ';
        }
        fout<<endl;
    }
    fout<<'\n';*/
    lee(jul_lin,jul_col,jul);
    /*for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            fout<<jul[i][j]<<' ';
        }
        fout<<endl;
    }*/
    int min=10000,lin,col;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
           if(rom[i][j]==jul[i][j] && rom[i][j]<min &&rom[i][j]>0)
           {
               min=rom[i][j];
               lin=i;
               col=j;
           }
        }
    }
    fout<<min<<' '<<lin<<' '<<col;
    return 0;
}