解法

とりあえず制約を整理すると答えになる。 辺を張れる限り張ってみて、それが制約を満たしているか判定 (典型)。 $y_j \to z_k$ の辺が張ってあることを $C _ {j, k}$ と書くと、問題文より、辺 $C _ {j, k}$ を張っても制約違反しない $\iff \forall i. A _ {i, j} \to B _ {i, k} \iff \lnot \exists i. A _ {i, j} \wedge \lnot B _ {i, k}$ である。 $O(N^3)$ だが std::bitset<> が可能。

リンク