Rețeaua socială Circle are influenceri, numerotați de la la , așezați sub forma unui cerc. În interiorul rețelei există legături speciale de comunicare bidirecțională, date sub forma unor perechi . Aceste legături respectă o regulă strictă de securitate: dacă desenăm influencerii pe cerc și legăturile ca segmente (corzi) între ei, oricare două segmente nu se pot intersecta decât, eventual, în capete. De asemenea, legăturile speciale se pot forma doar între influenceri neadiacenți pe cerc.
CEO-ul rețelei dorește să configureze conexiunile de bază de pe conturul cercului. Pentru fiecare pereche de influenceri adiacenți și (unde ), se alege un tip de conexiune, reprezentat printr-un caracter dintr-un șir de configurare de lungime (indexat de la ). Caracterul poate fi:
N: Nu există comunicare directă între și .L: Comunicare directă unidirecțională de la la .R: Comunicare directă unidirecțională de la la .B: Comunicare directă bidirecțională între și .
Cerință
Să se determine numărul de moduri distincte de a construi șirul de configurare astfel încât în rețeaua rezultată, orice influencer să poată transmite un mesaj oricărui alt influencer, direct sau indirect, folosind conexiunile de pe cerc și legăturile speciale. Deoarece acest număr poate fi foarte mare, se cere afișarea lui modulo .
Date de intrare
Fișierul de intrare influencer.in conține pe prima linie două numere naturale și , separate printr-un spațiu. Pe următoarele linii se vor afla câte două numere naturale și , separate printr-un spațiu, reprezentând o legătură specială bidirecțională între influencerul și .
Date de ieșire
Fișierul de ieșire influencer.out va conține pe o singură linie un număr natural, reprezentând numărul de șiruri de configurare valide, modulo .
Restricții și precizări
- ;
- ;
- Pentru orice legătură specială , se garantează că și perechea nu este (nodurile nu sunt adiacente pe cerc).
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 11 | și corzile nu se pot intersecta în capete |
| 2 | 16 | |
| 3 | 9 | |
| 4 | 4 | Toate corzile au unul dintre capete în influencerul |
| 5 | 17 | și corzile nu se pot intersecta în capete |
| 6 | 29 | Corzile nu se pot intersecta în capete |
| 7 | 14 | Fără alte restricții |
Exemplu
influencer.in
4 1
0 2
influencer.out
81
Explicații
Avem influenceri și o singură legătură () specială bidirecțională între influencerul și . Această coardă împarte cercul în două jumătăți care devin independente din punct de vedere al conectivității față de ansamblul : calea prin utilizatorul și calea prin utilizatorul .
Pentru ca întreaga rețea să fie tare conexă, este suficient și necesar ca influencerul și să poată trimite și primi mesaje de la mulțimea .
Să analizăm muchiile (între și ) și (între și ). Există exact perechi de caractere valide care asigură conectivitatea bidirecțională a nodului față de :
BB,BR,BL,BN,RB,RR,LB,LL,NB.
De exemplu, dacă alegem perechea LL ( L, L), fluxul este și . Nodul primește de la și trimite la . Deoarece și comunică direct prin coardă, nodul este perfect integrat în circuit. Orice altă combinație (de exemplu NN, RL, LR) va bloca fluxul nodului fie la primire, fie la trimitere.
În mod identic, pentru nodul , muchiile de pe cealaltă jumătate a cercului, și , pot fi alese tot în moduri valide.
Deoarece deciziile pentru jumătatea stângă sunt complet independente de cele pentru jumătatea dreaptă (datorită corzii centrale bidirecționale), numărul total de moduri pentru a construi șirul este .