Cod sursa(job #1623618)

Utilizator raresm44vasile rares raresm44 Data 1 martie 2016 20:38:09
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.87 kb
#include <iostream>
#include <fstream>
using namespace std;
const int dlin[8]={-1,0,1,0,-1,-1,1,1};
const int dcol[8]={0,-1,0,1,-1,1,1,-1};
ifstream in("rj.in");
ofstream out("rj.out");
struct poz{
    int lin,col;
};
int matr_r[102][102],matr_j[102][102],p,u,n,m,xr,yr,xj,yj;
char l;
poz g[10404],x,y;
int main()
{
    in>>n>>m;
    in.get(l);
    for (int i=0;i<=n+1;i++)
        for (int j=0;j<=m+1;j++)
        if((i==0)||(j==0)||(i==n+1)||(j==m+1)){
            matr_j[i][j]=-1;
            matr_r[i][j]=-1;
        }
        else{
            in.get(l);
            if(l=='X'){
                matr_r[i][j]=-1;
                matr_j[i][j]=-1;
            }
            if(l=='R'){
                xr=i;
                yr=j;
            }
            if(l=='J'){
                xj=i;
                yj=j;
            }
        }

        g[u++]=poz{xr,yr};
        matr_r[xr][yr]=1;
        while (p<u){
            x=g[p++];
            for (int d=0;d<8;d++){
                y.lin=x.lin+dlin[d];
                y.col=x.col+dcol[d];
                if(matr_r[y.lin][y.col]==0){
                    g[u++]=y;
                    matr_r[y.lin][y.col]=1+matr_r[x.lin][x.col];
                }
            }
        }


        g[u++]=poz{xj,yj};
        matr_j[xj][yj]=1;
        while (p<u){
            x=g[p++];
            for (int d=0;d<8;d++){
                y.lin=x.lin+dlin[d];
                y.col=x.col+dcol[d];
                if(matr_j[y.lin][y.col]==0){
                    g[u++]=y;
                    matr_j[y.lin][y.col]=1+matr_j[x.lin][x.col];
                }
            }
        }

        for (int i=0;i<=n+1;i++){
            for (int j=0;j<=m+1;j++)
                out<<matr_r[i][j]<<' ';
            out<<endl;
        }

        out<<endl;
        for (int i=0;i<=n+1;i++){
            for (int j=0;j<=m+1;j++)
                out<<matr_j[i][j]<<' ';
            out<<endl;
}
}