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;
}