bitsetを用います。
制約にAi<BiA_i < B_iAi<Biとあるのでパッケージ番号の大きい方から見ていくのが簡単です。
そして、番号の小さいパッケージに依存しているものを伝搬させていきます。
計算量はO(NM)O(NM)O(NM)となりますが、bitsetにより64倍高速化され間に合います。