SRM 539 Div2 Easy PlatypusPaternity

問題

研究所でカモノハシを買っているが,子どもと親の親子関係が分からなくなってしまった.わかっているのはオス・メスのそれぞれのカモノハシがどの子どもと仲がいいのか,そして各子供がどの兄弟グループに含まれているのかだけだ.家族関係が分かる内最大のグループのメンバー数を答えよという問題.
家族関係の条件として親となるオス・メスはその子供全てと仲良くなくてはいけないということ.また当然ながら子供は異なる兄弟グループに重複して所属することはない.

解答

全ての組み合わせを考え条件を満たすか判定するだけ.問題文を読むことが一番面倒だった.

class PlatypusPaternity
{
public:
  int maxFamily(vector <string> femaleCompatibility, vector <string> maleCompatibility, vector <string> siblingGroups)
    {
      int i, j, k, l;
      int n = siblingGroups.size();
      int fn = femaleCompatibility.size();
      int mn = maleCompatibility.size();
      int m = siblingGroups[0].size();
      int res = 0;
      for(i = 0; i < n; i++){
        for(j = 0; j < mn; j++){
          for(k = 0; k < fn; k++){
            int v = 0;
            for(l = 0; l < m; l++){
              if (siblingGroups[i][l] == 'Y'){
                if (femaleCompatibility[k][l] == 'Y' &&
                    maleCompatibility[j][l] == 'Y') v++;
                else {
                  v = 0;
                  break;
                }
              }
            }
            if (v > 0){
              // cout << i << "," << j << "," << k << " v=" << v << endl;
              res = max(res, v+2);
            }
          }
        }
      }
      return res;
    }
};