Cod sursa(job #2054957)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 2 noiembrie 2017 18:11:21
Problema Rj Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int lee[102][102],f[102][102];
int cx[10001],cy[10001];
int dx[8]={-1,-1,-1,0,+1,+1,+1,0};
int dy[8]={-1,0,+1,+1,+1,0,-1,-1};
int main()
{
    int n,m,i,j,p,u,x1,y1,x2,y2,z,lmin,cmin,min,ct;
    char c;
    freopen("rj.in","r",stdin);
    freopen("rj.out","w",stdout);
    scanf("%d%d",&n,&m);
    getchar();
    for(i=1; i<=n; i++)
    {
        ct=1;
        for(j=1; j<=m; j++)
        {
            c=getchar();
            if(c=='\n') ct=0;
            if(c=='R')
                x1=i,y1=j;
            if(c=='J')
                x2=i,y2=j;
            if(c=='X')
                lee[i][j]=f[i][j]=-1;
        }
        if(ct)
            c=getchar();
    }
    for(i=0; i<=n+1; i++)
        lee[i][0]=lee[i][m+1]=f[i][0]=f[i][m+1]=-1;
    for(i=0; i<=m+1; i++)
        lee[0][i]=lee[n+1][i]=f[0][i]=f[n+1][i]=-1;
    p=u=1;
    cx[1]=x1;
    cy[1]=y1;
    f[x1][y1]=1;
    while(p<=u)
    {
        for(i=0; i<8; i++)
            if(f[cx[p]+dx[i]][cy[p]+dy[i]]==0)
                u++,cx[u]=cx[p]+dx[i],cy[u]=cy[p]+dy[i],f[cx[u]][cy[u]]=f[cx[p]][cy[p]]+1;
        p++;
    }
    p=u=1;
    cx[1]=x2;
    cy[1]=y2;
    lee[x2][y2]=1;
    cmin=lmin=200;
    min=500;
    while(p<=u)
    {
        for(i=0; i<8; i++)
            if(lee[cx[p]+dx[i]][cy[p]+dy[i]]==0)
                if(lee[cx[p]][cy[p]]+1<z)
                    u++,cx[u]=cx[p]+dx[i],cy[u]=cy[p]+dy[i],lee[cx[u]][cy[u]]=lee[cx[p]][cy[p]]+1;
        p++;
    }
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(f[i][j]==lee[i][j] && f[i][j]<min && f[i][j]>0)
            {
                min=f[i][j];
                lmin=i;
                cmin=j;
            }
    printf("%d %d %d",min,lmin,cmin);

    return 0;
}