시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB111100.000%

문제

Fatimeh studerar sitt hemspråk som använder det arabiska alfabetet. Just nu sitter hon med en övning där hon ska svara på hur många sätt hon kan bilda ett ord med de givna bokstäverna i uppgiften.

Om det hade varit på svenska kunde övningen ha se ut så här:

r M e a

Eftersom fyra bokstäver är givna vet Fatimeh att hon måste testa $4*3*2*1 = 24$ permutationer. Men eftersom bokstaven M är "stor" så vet vi att den måste placeras i ordets början. Med det villkoret kan bara $6$ ord bildas, exempelvis $Mera$, men inte $raMe$. I det arabiska alfabetet har man inte stora och små bokstäver på samma sätt, men man har andra regler om var i ordet bokstaven kan förekomma, även i relation till andra bokstäver. 

I denna uppgift antar vi att det finns två typer av restriktioner: Antingen måste en bokstav komma precis före någon annan bokstav, eller så kan en bokstav bara stå på vissa positioner. Exempel på dessa regler och den notation vi använder finns i följande tabell:

Regel Notation
Bokstav $B$ måste stå på på plats $1$ eller plats $4$ B@01,04
Bokstav $D$ måste direkt föregå $C$ eller $B$ D:CB

Skriv ett program som beräknar på hur många sätt som $N$ olika bokstäver (för enkelhets skull kallade A, B, C,... etc.) kan placeras ut, givet ett antal regler av dessa två typer. 

입력

På första raden står två heltal, antalet bokstäver $N$ och antalet regler $K$. Därefter följer $K$ rader vardera beskrivande en regel enligt notationen ovan. En viss bokstav kan inte stå först i mer än en regel av vardera typen. Observera att alla platsnummer skrivs med två siffror.

출력

Programmet ska skriva ut ett heltal: antalet sätt bokstäverna kan placeras ut. Svaret kommer alltid att understiga 10 miljoner.

제한

  • $2\le N\le 15$

예제 입력 1

4 2
B@01,04
D:CB

예제 출력 1

6

예제 입력 2

3 2
B@02
A:BC

예제 출력 2

1

예제 입력 3

3 2
B@02
A:C

예제 출력 3

0

예제 입력 4

8 4
E@02,08,05
A:CEF
A@05,02,03
C:ABCDH

예제 출력 4

918

출처

Olympiad > Swedish Olympiad in Informatics > 2017 > Qualification 4번

  • 문제를 만든 사람: Arash Rouhani