Tuesday, April 19, 2016

UVa 784 - Maze Exploration

#include <bits/stdc++.h>
#define LL  long long
#define SZ(x) ((int)(x).size())
#define ALL(x) (x).begin(),(x).end()
#define REP(i,n) for(int i=0;i<n;i++)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define REV(i,n) for(int i=n-1;i>=0;i--)
#define pri(a) cout << a << endl;
using namespace std;

string gr[33];
int r,c;

void DFS(int i, int j)
{
    if(i<0 or j<0 or i==r or j==c or (gr[i][j] != ' ' and gr[i][j] != '*')) return ;

    gr[i][j] = '#';

    DFS(i-1,j);
    DFS(i-1,j+1);
    DFS(i-1,j-1);
    DFS(i,j+1);
    DFS(i,j-1);
    DFS(i+1,j);
    DFS(i+1,j+1);
    DFS(i+1,j-1);
}

int main()
{
    int T;
    cin>>T;
    getchar();
    while(T--)
    {
        int idx = 0, mx = -1;
        while(getline(cin,gr[idx++]) and gr[idx-1][0] != '_')
        {
            mx = max(mx,SZ(gr[idx-1]));
        }

        r = idx;
        c = mx;

        REP(i,r)
        {
            REP(j,c)
            {
                if(gr[i][j] == '*')
                {
                    DFS(i,j);
                }
            }
        }

        REP(i,r) cout << gr[i] << "\n";
    }
    return 0;
}


/*
2
XXXXXXXXX
X X X
X * X
X X X
XXXXXXXXX
X X
X X
X X
XXXXX
_____
XXXXX
X   X
X * X
X   X
XXXXX
_____

*/

No comments:

Post a Comment