yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

NECプログラミングコンテスト2021(AtCoder Beginner Contest 229) A - First Grid

問題の要約
 縦2行,横2列のグリッドがある。
 このグリッドは,各マスが黒か白であり,少なくとも2つの黒マスを含む。
 各マスの色の情報は文字列S1,S2として,以下の形式で与えられる。
  ・文字列Siのj文字目が#であれば上からiマス目,左からjマス目は黒
  ・文字列Siのj文字目が.であれば上からiマス目,左からjマス目は白
 2つの異なる黒マス同士が辺で接している時,またはその時に限りそれら2つの黒マスは直接行き来できる。
 黒マスの実をいくつか通ることによって,どの2つの黒マス同士も(直接または間接的に)行き来できるかどうか判定しろ。
制約
 S1,S2は#または.からなる2文字の文字列
 S1,S2に#が合計2つ以上含まれる
入力
 S1
 S2
考え方
 1,黒マスが2つ以上あり,黒マスが行き来できないパターンは2パターンしかない。
  それは黒マスが対角上にある場合である。
  これで条件分岐する。
実際のプログラム
#include<iostream>
#include<vector>
#include<string>

using namespace std;

int main(){
  vector<string> S(2);
  cin >> S[0] >> S[1];
  if(S[0][0] == '#' && S[0][1] == '.' && S[1][0] == '.' && S[1][1] == '#'){
    cout << "No" << endl;
  }else if(S[0][0] == '.' && S[0][1] == '#' && S[1][0] == '#' && S[1][1] == '.'){
    cout << "No" << endl;
  }else{
    cout << "Yes" << endl;
  }
  
  
  return 0;
}