Двочастковий покрив#9724

Двочастковий покрив

1 секунда
128 мегабайтів
Дуже складна

У двочастковому графі вершини розбиваються на дві непересічні множини і так, що кожне ребро з'єднує вершину з з вершиною з . Паросполучення — це множина ребер, жодні два з яких не мають спільну вершину. Кажуть, що паросполучення покриває множину вершин , якщо кожна вершина з є кінцем хоча б одного ребра з .

Кожній вершині в графі приписана вага — додатне ціле число. Вагою множини вершин називають суму ваг усіх вершин, що до неї входять.

Задано цілий поріг . Визначте кількість різних множин вершин , таких що їх сумарна вага не менше , і вони покриваються хоча б одним паросполученням .

Вхідні дані

У першому рядку дано два цілі числа і (1 \le n, m \le 20) — кількість вершин у множинах і відповідно. Позначимо вершини множини як a_1, a_2, \ldots, a_n, а вершини множини як b_1, b_2, \ldots, b_m.

Наступні рядків містять по символів, що описують ребра графа. -й символ у -му рядку дорівнює "", якщо між a_i та b_j є ребро, та "" в протилежному випадку.

Наступний рядок містить цілих чисел v_1, v_2, \ldots, v_n (1 \le v_k \le 10^7) — ваги вершин a_1, a_2, \ldots, a_n.

Далі йде рядок з цілих чисел w_1, w_2, \ldots, w_m (1 \le w_k \le 10^7) — ваги вершин b_1, b_2, \ldots, b_m.

Останній рядок містить одне ціле число (1 \le t \le 4 \cdot 10^8) — поріг ваги.

Вихідні дані

Виведіть кількість множин вершин, сумарна вага яких не менше і які покриваються хоча б одним паросполученням .

Приклади

У наведеному прикладі підмножина \{a_1, a_2, b_2, b_3\} покривається паросполученням \{(a_1, b_2), (a_2, b_3)\} і має вагу .

Підмножини \{a_3, b_2, b_3\} і \{a_2, a_3, b_2, b_3\} також покриваються паросполученням \{(a_2, b_3), (a_3, b_2)\}, і їх ваги рівні і відповідно.

Усі інші множини або мають сумарну вагу менше , або не покриваються жодним паросполученням.

Наприклад, підмножина \{a_2, a_3, b_1, b_3\} має вагу , але не покривається жодним паросполученням, тому не враховується при підрахунку.

Приклад 2

Loading
Loading

Приклад 1

Loading
Loading