Bipartitna Barikada

시간 제한2.5초메모리 제한1024 MB

요약
이분 그래프에서 무게 합이 t 이상이고 어떤 매칭으로 모든 정점이 덮이는 정점 부분집합의 수를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 조합론, 그래프
정답자
아직 제출이 없습니다

문제

U bipartitnom grafu, čvorovi se mogu podijeliti u dva disjunktna skupa AA i BB tako da svaki brid povezuje čvor iz skupa AA s čvorom iz skupa BB. Sparivanje MM je skup bridova gdje nijedna dva brida ne dijele zajednički čvor. Kažemo da sparivanje MM barikadira skup čvorova VV ako je svaki čvor iz VV krajnja točka barem jednog brida iz MM.

Zadan je bipartitan graf u kojem je svakom čvoru pridružena cjelobrojna težina. Pritom, težinu skupa čvorova definiramo kao sumu težina čvorova toga skupa.

Za dani cijeli broj tt, potrebno je pronaći broj skupova VV takvih da je njihova težina barem tt te da je skup VV barikadiran barem jednim sparivanjem MM.

입력

U prvom su retku prirodni brojevi nn i mm (1≤n,m≤201 ≤ n, m ≤ 20) koji redom predstavljaju broj čvorova u skupovima AA i BB. Označit ćemo čvorove u skupu AA s a_1,a_2,…,a_na\_1, a\_2, \dots , a\_n, a čvorove u skupu BB s b_1,b_2,…,b_mb\_1, b\_2, \dots , b\_m.

Svaki od idućih nn redaka sastoji se od mm znakova koji opisuju bridove bipartitnog grafa. Preciznije, jj-ti znak u ii-tom retku je '1' ako postoji brid koji spaja čvorove a_ia\_i i b_jb\_j, odnosno '0' tako to nije slučaj.

U idućem je retku nn prirodnih brojeva v_1,v_2,…,v_nv\_1, v\_2, \dots , v\_n (1≤v_k≤10,000,0001 ≤ v\_k ≤ 10\\, 000\\, 000) koji redom predstavljaju težine čvorova a_1,a_2,…,a_na\_1, a\_2, \dots , a\_n.

U idućem je retku mm prirodnih brojeva w_1,w_2,…,w_mw\_1, w\_2, \dots , w\_m (1≤w_k≤10,000,0001 ≤ w\_k ≤ 10\\, 000\\, 000) koji redom predstavljaju težine čvorova b_1,b_2,…,b_mb\_1, b\_2, \dots , b\_m.

U posljednjem je retku prirodan broj tt (1≤t≤400,000,0001 ≤ t ≤ 400\\, 000\\, 000) iz teksta zadatka.

출력

Ispišite broj skupova čvorova težine barem tt koji su barikadirani barem jednim sparivanjem.

힌트

Pojašnjenje prvog probnog primjera:

Skup a_1,a_2,b_2,b_3\\{a\_1, a\_2, b\_2, b\_3\\} je barikadiran sparivanjem (a_1,b_2),(a_2,b_3)\\{(a\_1, b\_2),(a\_2, b\_3)\\} i ima težinu 2121. Skupovi a_3,b_2,b_3\\{a\_3, b\_2, b\_3\\} i a_2,a_3,b_2,b_3\\{a\_2, a\_3, b\_2, b\_3\\} barikadirani su sparivanjem (a_2,b_3),(a_3,b_2)\\{(a\_2, b\_3),(a\_3, b\_2)\\}, te redom imaju težine 2121 i 2323. Preostali skupovi čvorova ili imaju težinu manju od 2121 ili nisu barikadirani niti jednim sparivanjem. Primjerice, skup a_2,a_3,b_1,b_3\\{a\_2, a\_3, b\_1, b\_3\\} ima težinu 2626, međutim ne postoji sparivanje koje ga barikadira.

예제2

  1. 예제 1

    입력
    3 3
    010
    111
    010
    1 2 3
    8 5 13
    21
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 2
    01
    11
    10
    1 2 3
    4 5
    8
    
    예상 출력
    13