Cod sursa(job #1884992)

Utilizator peleioana43@yahoo.compele carmen ioana [email protected] Data 19 februarie 2017 15:36:37
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.24 kb
#include<iostream>
#include<fstream>
#include<cstring>
#include<queue>
using namespace std;
fstream fin ("rj.in",ios::in), fout("rj.out",ios::out);
int di[]={-1,0,1,0,1,1,-1,-1};
int dj[]={0,1,0,-1,1,-1,1,-1};
char mat[305][305];
int mi[305][305],ju[305][305],ro[305][305];
int startr1,startr2,startj1,startj2,stopr1,stopr2,stopj1,stopj2;
queue < pair < int,int > > c;
pair<int,int>crt;

void LEE(int a[305][305], int start1,int start2)
{
   int k;
    a[start1][start2]=1;
    c.push(make_pair(start1,start2));
    while(!c.empty())
    {
        crt=c.front();
        c.pop();
        for(k=0;k<=7;k++)
        {
            if(a[crt.first+di[k]][crt.second+dj[k]]==0)
            {
                c.push(make_pair(crt.first+di[k],crt.second+dj[k]));
                a[crt.first+di[k]][crt.second+dj[k]]=a[crt.first][crt.second]+1;
            }
        }
    }
}
int main ()
{
    int n,m,i,j;
    fin>>n>>m;
fin.get();
    for(i=1;i<=n;i++)
    {
        fin.getline(mat[i],305);

    }
    for(i=1;i<=n;i++)
    {
        for(j=0;j<=m;j++)
        {
            if(mat[i][j]=='R')
            {
                startr1=i;
                startr2=j+1;

            }
            if(mat[i][j]=='J')
            {
                startj1=i;
                startj2=j+1;
            }
            if(mat[i][j]=='X')
            {
                mi[i][j+1]=-1;
            }
            if(mat[i][j]==' ')
            {
                mi[i][j+1]==0;
            }
        }
    }
     for(i=1;i<=n;i++)
    {
        for(j=0;j<=m;j++)
        {
            ro[i][j]=mi[i][j];
            ju[i][j]=mi[i][j];
        }
    }
    for(i=0;i<=n;i++)
    {
        ro[0][i]=-1;
        ju[0][i]=-1;
        ro[i][0]=-1;
        ju[i][0]=-1;

    }
    for(i=0;i<=m;i++)
    {

        ro[m+1][i]=-1;
        ju[m+1][i]=-1;
        ro[i][m+1]=-1;
        ju[i][m+1]=-1;
    }
   LEE(ro,startr1,startr2);
    LEE(ju,startj1,startj2);
for(i=1;i<=n;i++)
{
    for(j=1;j<=m;j++)
    {
        if((ro[i][j]>0)&&(ju[i][j]==ro[i][j]))
        {
            fout<<ro[i][j];
            fout<<" "<<i<<" "<<j;
            break;
        }
    }
}
    fin.close();
    fout.close();
    return 0;

}