Cod sursa(job #1632731)

Utilizator cmarius46Mihail Vlahuta cmarius46 Data 6 martie 2016 10:49:05
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int dl[]={-1,0,1,0},dc[]={0,1,0,-1},R[105][105],J[105][105],i,j,m,n,k,prim,ultim,mint;
char a[120];
struct lincol
{
    int lin,col;
};
lincol C[101*101],pj,pr,p1,p,v;
void Af()
{
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            cout<<R[i][j]<<" ";
        cout<<'\n';
    }
}
int main()
{f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
    f.get(a,m+1);
    for(j=0;j<strlen(a);j++)
    {
        if(a[j]=='X')
        {
            R[i][j+1]=-1;
            J[i][j+1]=-1;
        }
        if(a[j]=='R')
        {
            pr.lin=i;
            pr.col=j+1;
        }
        if(a[j]=='J')
        {
            pj.lin=i;
            pj.col=j+1;
        }
    }
    f.get();
}
for(i=0;i<=n+1;i++)
{
    R[i][m+1]=-1;
    R[i][0]=-1;
    J[i][m+1]=-1;
    J[i][0]=-1;
}
for(i=0;i<=m+1;i++)
{
    R[0][i]=-1;
    R[n+1][i]=-1;
    J[0][i]=-1;
    J[n+1][i]=-1;
}

// LEE R
prim=ultim=0;
C[0]=pr;
R[pr.lin][pr.col]=1;
while(prim<=ultim&&!R[pj.lin][pj.col])
{
    p=C[prim];
    prim++;
    for(k=0;k<4;k++)
    {
        v.lin=p.lin+dl[k];
        v.col=p.col+dc[k];
        if(R[v.lin][v.col]==0)
        {
            C[++ultim]=v;
            R[v.lin][v.col]=R[p.lin][p.col]+1;
        }
    }
}
//
Af();

// LEE J
prim=ultim;
C[0]=pj;
J[pj.lin][pj.col]=1;
while(prim<=ultim&&!J[pr.lin][pr.col])
{
    p=C[prim];
    prim++;
    for(k=0;k<4;k++)
    {
        v.lin=p.lin+dl[k];
        v.col=p.col+dc[k];
        if(!J[v.lin][v.col])
        {
            C[++ultim]=v;
            J[v.lin][v.col]=J[p.lin][p.col]+1;
        }
    }
}
//

mint=99999999;

for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
{
    if(R[i][j]>0&&R[i][j]==J[i][j])
        if(R[i][j]<mint)
            {
                mint=R[i][j];
                p1.lin=i;
                p1.col=j;
            }
}
g<<R[p1.lin][p1.col]-1<<" "<<p1.lin<<" "<<p1.col;

    return 0;
}