influencer

Time limit: 1.5s Memory limit: 128MB Input: influencer.in Output: influencer.out

Rețeaua socială Circle are NN influenceri, numerotați de la 00 la N1N - 1, așezați sub forma unui cerc. În interiorul rețelei există MM legături speciale de comunicare bidirecțională, date sub forma unor perechi (u,v)(u, v). 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 ii și (i+1) mod N(i + 1) \text{ mod } N (unde 0iN10 \leq i \leq N - 1), se alege un tip de conexiune, reprezentat printr-un caracter dintr-un șir de configurare SS de lungime NN (indexat de la 00). Caracterul SiS_i poate fi:

  • N: Nu există comunicare directă între ii și (i+1) mod N(i + 1) \text{ mod } N.
  • L: Comunicare directă unidirecțională de la (i+1) mod N(i + 1) \text{ mod } N la ii.
  • R: Comunicare directă unidirecțională de la ii la (i+1) mod N(i + 1) \text{ mod } N.
  • B: Comunicare directă bidirecțională între ii și (i+1) mod N(i + 1) \text{ mod } N.

Cerință

Să se determine numărul de moduri distincte de a construi șirul de configurare SS 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 109+710^9 + 7.

Date de intrare

Fișierul de intrare influencer.in conține pe prima linie două numere naturale NN și MM, separate printr-un spațiu. Pe următoarele MM linii se vor afla câte două numere naturale uu și vv, separate printr-un spațiu, reprezentând o legătură specială bidirecțională între influencerul uu și vv.

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 SS valide, modulo 109+710^9 + 7.

Restricții și precizări

  • 3N1 000 0003 \leq N \leq 1 \ 000 \ 000;
  • 0MN20 \leq M \leq \lfloor \frac{N}{2} \rfloor;
  • Pentru orice legătură specială (u,v)(u, v), se garantează că uv2|u - v| \geq 2 și perechea nu este (0,N1)(0, N - 1) (nodurile nu sunt adiacente pe cerc).
# Punctaj Restricții
1 11 N10N \leq 10 și corzile nu se pot intersecta în capete
2 16 M=0M = 0
3 9 M=1M = 1
4 4 Toate corzile au unul dintre capete în influencerul 00
5 17 N1 000N \leq 1 \ 000 ș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 N=4N = 4 influenceri și o singură legătură (M=1M = 1) specială bidirecțională între influencerul 00 și 22. Această coardă împarte cercul în două jumătăți care devin independente din punct de vedere al conectivității față de ansamblul {0,2}\{0, 2\}: calea prin utilizatorul 11 și calea prin utilizatorul 33.

Pentru ca întreaga rețea să fie tare conexă, este suficient și necesar ca influencerul 11 și 33 să poată trimite și primi mesaje de la mulțimea {0,2}\{0, 2\}.

Să analizăm muchiile S0S_0 (între 00 și 11) și S1S_1 (între 11 și 22). Există exact 99 perechi de caractere valide care asigură conectivitatea bidirecțională a nodului 11 față de {0,2}\{0, 2\}:

  • BB, BR, BL, BN, RB, RR, LB, LL, NB.

De exemplu, dacă alegem perechea LL (S0=S_0 = L, S1=S_1 = L), fluxul este 212 \rightarrow 1 și 101 \rightarrow 0. Nodul 11 primește de la 22 și trimite la 00. Deoarece 00 și 22 comunică direct prin coardă, nodul 11 este perfect integrat în circuit. Orice altă combinație (de exemplu NN, RL, LR) va bloca fluxul nodului 11 fie la primire, fie la trimitere.

În mod identic, pentru nodul 33, muchiile de pe cealaltă jumătate a cercului, S2S_2 și S3S_3, pot fi alese tot în 99 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 SS este 9×9=819 \times 9 = 81.

Log in or sign up to be able to send submissions!