Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <bits/stdc++.h>
- //#pragma GCC optimize("O3")
- //#pragma GCC optimize("unroll-loops")
- #define mp make_pair
- #define pb push_back
- #define eb emplace_back
- #define x first
- #define y second
- //#define sz(x) (int)x.size()
- #define all(x) begin(x), end(x)
- #define rall(x) rbegin(x), rend(x)
- #define FOR(i,a,b) for (int i = (a); i < (b); i++)
- #define RFOR(i,b,a) for (int i = (b) - 1; i >= (a); i--)
- using namespace std;
- typedef unsigned long long ull;
- typedef long long ll;
- typedef long double ld;
- typedef pair<int, int> pi;
- typedef pair<ld, ld> pld;
- typedef pair<ll, ll> pl;
- typedef vector<int> veci;
- typedef vector<bool> vecb;
- typedef vector<vector<int>> vvi;
- typedef vector<vector<bool>> vvb;
- const int INF_I = 1e9;
- const ll INF_LL = 1e18;
- const int MOD = 1000000007;
- const double eps = 1e-6;
- vector<vector<short>> g;
- vector<char> c;
- int n;
- bool dfs(int v){
- if (v >= n)
- while(1){}
- c[v] = 1;
- for (int i : g[v]){
- if (c[i] == 0) {
- if (dfs(i))
- return true;
- }
- else if (c[i] == 1)
- return true;
- }
- c[v] = 2;
- return false;
- }
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- cin >> n;
- g.assign(n, vector<short>());
- c.assign(n, 0);
- for (int i = 0; i < n-1; i++){
- for (int j = 0; j < n-i-1; j++){
- char ch;
- cin >> ch;
- if (ch == 'B')
- g[i].eb(i+j+1);
- else
- g[i+j+1].eb(i);
- }
- }
- for (int i = 0; i < n; i++)
- if (c[i] == 0 && dfs(i)) {
- cout << "NO\n";
- return 0;
- }
- cout << "YES\n";
- return 0;
- }
Add Comment
Please, Sign In to add comment