Thursday, June 1, 2017

UVa 469 - Wetlands of Florida


//aarifshuvo  ``CSEJU

#include <bits/stdc++.h>
#define ll long long
#define SZ(x) ((int)(x).size())
#define scl(x) scanf("%lld", &x)
#define scll(x,y) scanf("%lld %lld", &x, &y)
#define ALL(x) (x).begin(),(x).end()
#define REP(i,n) for(int i=0;i<n;i++)
#define REV(i,n) for(int i=n-1;i>=0;i--)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define pri(a) cout<<a<<endl
#define prii(a,b) cout<<a<<" "<<b<<endl
using namespace std;

string sa[123];
bool vis[123][123];
int r , c;
int cnt = 0;

void dfs(int i, int j)
{
    if(i<0 or j<0 or i==r or j==c or vis[i][j]==1 or sa[i][j]=='L')

                                                          return;

    vis[i][j] = 1;
    if(sa[i][j]=='W') cnt++;

    dfs(i+1,j+1);
    dfs(i+1,j-1);
    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);
}

int main()
{
    //freopen("F:/fout.txt", "w", stdout);
    int fl = 0;
    int t,i,j,idx=0;
    string s;
    scanf("%d", &t);
    getchar();
    getchar();
    while(t--)
    {
        if(fl==1) printf("\n"); fl = 1;
        r = 0, c = 0;
        idx = 0;

        while(getline(cin,s) and s!="")
        {
            if(s[0]=='W' or s[0]=='L')
            {
                sa[idx++] = s;
                r = idx;
                c = SZ(s);
            }
            else
            {
                stringstream ss(s);
                ss >> i >> j;
                i--, j--;

                memset(vis,0,sizeof vis);

                if(sa[i][j]=='W' or sa[i][j]=='L')
                {
                    cnt = 0;
                    dfs(i,j);
                    printf("%d\n", cnt);
                }
            }
        }
    }

    return 0;
}

No comments:

Post a Comment