Cod sursa(job #1519408)

Utilizator raulrusu99Raul Rusu raulrusu99 Data 7 noiembrie 2015 12:12:45
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.15 kb
#include <fstream>
#include <queue>
#include <string.h>
#include <iostream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int a[105][105],n,m;
int J[105][105],R[105][105],rx,ry,jx,jy;
char l;
queue <int> Qx, Qy;
const int dx[]={1,1,1,0,-1,-1,-1,0},dy[]={1,0,-1,-1,-1,0,1,1};
void Lee(int d[][105], int sx, int sy)
{
    d[sx][sy]=1;
    Qx.push(sx);
    Qy.push(sy);
    while (Qx.size())
    {
        int x=Qx.front();
        int y=Qy.front();
        Qx.pop();
        Qy.pop();

        for (int k=0;k<8;k++)
        {
            int xx=x+dx[k];
            int yy=y+dy[k];
            if (xx && yy && xx<=n && yy<=n && d[xx][yy]==0)
            {
                d[xx][yy]=d[x][y]+1;
                Qx.push(xx);
                Qy.push(yy);
            }
        }
    }
}
int main()
{
    f>>n>>m;
    f.get();
    for (int i=1;i<=n;i++)
    {
        char v[105];
        f.getline (v,105);
        for (int j=0;j< strlen(v);j++)
        {
            if (v[j]=='R')
            {
                rx=i;
                ry=j+1;
            }
            else
                if (v[j]=='J')
                {
                    jx=i;
                    jy=j+1;
                }
                else
                    if (v[j]=='X')
                    {
                        a[i][j+1]=-1;
                        R[i][j+1]=-1;
                        J[i][j+1]=-1;
                    }
        }
    }

    Lee(R,rx,ry);
    Lee(J,jx,jy);
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
            cout<<R[i][j]<<" ";
        cout<<"\n";
    }
    cout<<"\n";
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
            cout<<J[i][j]<<" ";
        cout<<"\n";
    }
    cout<<"\n";
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";
    }

    for (int i=1;i<=n;i++)
        for (int j=1;j<=m;j++)
            if (R[i][j]>0 && R[i][j] == J[i][j])
            {
                g<<R[i][j]<<" "<<i<<" "<<j;
                return 0;
            }


    return 0;
}