0% found this document useful (0 votes)
19 views2 pages

Ready Go Part 1 Anit Mangal Anitm Source Code

This document contains C++ code for solving a problem involving a 2D grid of characters. It initializes various data types and containers, defines a dfs function to explore connected regions of the grid, a solve function that runs the problem logic on test cases, and a main function that reads input, calls solve, and writes output. Key elements include a vector of vectors representing the grid, a set to track neighboring positions, and a dfs to find connected components labeled as islands.

Uploaded by

Aditya Garg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views2 pages

Ready Go Part 1 Anit Mangal Anitm Source Code

This document contains C++ code for solving a problem involving a 2D grid of characters. It initializes various data types and containers, defines a dfs function to explore connected regions of the grid, a solve function that runs the problem logic on test cases, and a main function that reads input, calls solve, and writes output. Key elements include a vector of vectors representing the grid, a set to track neighboring positions, and a dfs to find connected components labeled as islands.

Uploaded by

Aditya Garg
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#pragma GCC optimize("Ofast")

#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")


#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <complex>
#include <queue>
#include <set>
#include <unordered_set>
#include <list>
#include <chrono>
#include <random>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <stack>
#include <iomanip>
#include <fstream>

using namespace std;

typedef long long ll;


typedef long double ld;
typedef pair<int,int> p32;
typedef pair<ll,ll> p64;
typedef pair<double,double> pdd;
typedef vector<ll> v64;
typedef vector<int> v32;
typedef vector<vector<int> > vv32;
typedef vector<vector<ll> > vv64;
typedef vector<vector<p64> > vvp64;
typedef vector<p64> vp64;
typedef vector<p32> vp32;
ll MOD = 998244353;
double eps = 1e-12;
#define forn(i,e) for(ll i = 0; i < e; i++)
#define forsn(i,s,e) for(ll i = s; i < e; i++)
#define rforn(i,s) for(ll i = s; i >= 0; i--)
#define rforsn(i,s,e) for(ll i = s; i >= e; i--)
#define ln "\n"
#define dbg(x) cout<<#x<<" = "<<x<<ln
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define INF 2e18
#define fast_cin() ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define all(x) (x).begin(), (x).end()
#define sz(x) ((ll)(x).size())

string ans = "NO";


vector<vector<bool>> vis;
vector<vector<char>> v;
set<pair<int,int>> s;

void dfs(int i, int j) {


if (i > 0 && v[i-1][j] == '.') s.insert({i-1,j});
if (i < v.size()-1 && v[i+1][j] == '.') s.insert({i+1,j});
if (j > 0 && v[i][j-1] == '.') s.insert({i,j-1});
if (j < v[0].size()-1 && v[i][j+1] == '.') s.insert({i,j+1});
vis[i][j] = true;
if (i > 0 && v[i-1][j] == 'W' && !vis[i-1][j]) dfs(i-1,j);
if (i < v.size()-1 && v[i+1][j] == 'W' && !vis[i+1][j]) dfs(i+1,j);
if (j > 0 && v[i][j-1] == 'W' && !vis[i][j-1]) dfs(i,j-1);
if (j < v[0].size()-1 && v[i][j+1] == 'W' && !vis[i][j+1]) dfs(i,j+1);
}

void solve(int CASE) {


int r,c;
cin >> r >> c;
vis.clear();
v.clear();
vis.resize(r, vector<bool>(c, false));
v.resize(r, vector<char>(c));
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
cin >> v[i][j];
}
}
ans = "NO";
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (v[i][j] == 'W' && !vis[i][j]) {
s.clear();
dfs(i,j);
if (s.size() == 1) {
ans = "YES";
break;
}
}
}
}
cout << "Case #" << CASE << ": " << ans << ln;
}

int main() {
fast_cin();
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
ll t;
cin >> t;
for(int it=1;it<=t;it++) {
solve(it);
}
return 0;
}

You might also like