Cod sursa(job #1128466)

Utilizator pincucatalinPincu Catalin pincucatalin Data 27 februarie 2014 17:12:59
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.06 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream in ("rj.in");
ofstream out ("rj.out");
int n,m,rom[101][101],jul[101][101];
char a[101][101];
const int N=1001;
const int dlin[] = {-1, -1, -1, 0, 0, 1, 1, 1};
const int dcol[] = {-1, 0, 1, -1, 1, -1, 0, 1};
struct pozitie {
    int lin,col;
};
queue <pozitie> q;
pozitie x;
void lee (int d[101][101],pozitie x0)
{
    pozitie x,y;
    q.push (x0);
    while (!q.empty())
    {
        x=q.front();
        q.pop();
        for (int i=0;i<8;i++)
        {
            y.lin=x.lin+dlin[i];
            y.col=x.col+dcol[i];
            if (d[y.lin][y.col]==0 && a[y.lin][y.col]==' ')
            {
                q.push(y);
                d[y.lin][y.col]=d[x.lin][x.col]+1;
            }
        }

    }
}
void f ()
{
    int linia=0,coloana=0;
    rom[0][0]=30000;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
        {
            if (rom[i][j]==jul[i][j] && rom[i][j]!=0)
            {
                if (rom[i][j]<rom[linia][coloana])
                {
                    linia=i;
                    coloana=j;
                }
            }
        }
    }
    out<<rom[linia][coloana]+1<<" ";
    out<<linia<<" "<<coloana<<" ";
}
void scrie(int d[101][101])
{
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
        {
            cout<<d[i][j]<<" ";
        }
        cout<<'\n';
    }
    cout<<'\n'<<"*********"<<'\n';
}
int main()
{
    in>>n>>m>>ws;
    for (int i=1;i<=n;i++)
    {
        in.getline(1+a[i], N);
    }
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=m;j++)
            {
                if (a[i][j]=='R')
            {
                x.lin=i;
                x.col=j;
                lee(rom,x);
            }
            else
            if (a[i][j]=='J')
            {
                x.lin=i;
                x.col=j;
                lee (jul,x);
            }
            }
    }
    //scrie(rom);
    //scrie(jul);
    f();
    return 0;
}