RoAlgo Contest #1 | echipe

This was the problem page during the contest. Access the current page here.
Time limit: 0.2s
Memory limit: 128MB
Input: echipe.in
Output: echipe.out

Tu ești patronul unei echipe de fotbal. Ai găsit strategia perfectă pentru a câștiga orice meci pe care îl va juca echipa ta. Strategia aceasta constă în a spune fiecărui jucător de a da pase la exact o persoană. Chiar dacă inițial pare o strategie proastă, aceasta te a ajutat să ajungi până în finala campionatului pe sate.

Într-o echipa se formează alte "sub-echipe". O "sub-echipă" reprezintă o mulțime de jucători în care orice jucător poate da pase oricărui alt jucător printr-o pasă indirectă sau o serie de pase. În aceste "sub-echipe" ai stabilit anumite roluri pe care minim un jucător trebuie sa aibă, mai exact KK roluri diferite.

Cerință

Știind că sunt NN jucători în echipă, KK roluri diferite și fiecare pasă pe care o poate face un jucător, să se afle numărul de moduri în care se pot da roluri echipei.

Date de intrare

Pe prima linie a fișierului de intrare echipe.in se află NN urmat de KK. Pe următoarea linie se află un șir de numere naturale p1p_1, p2p_2, \cdots , pNp_N .
Pentru fiecare ii, 1iN1 \leq i \leq N, jucătorul ii poate să dea pase jucătorului pip_i.

Date de ieșire

Pe prima linie a fișierului de ieșire echipe.out se va găsi un singur număr întreg, care reprezintă restul împărțirii la 109+710^9 + 7 a numărului de moduri de a da roluri echipei

Restricții și precizări

  • 1KN21051 \leq K \leq N \leq 2 \cdot 10^5
  • Fiecare numar din intervalul [1,N][1, N] apare în șirul pp apare decât o dată
  • Se asigură faptul că există cel puțin un mod de a da roluri echipei

Subtask-uri

# Punctaj Restricții
1 12 1N151 \leq N \leq 15, 1K41 \leq K \leq 4
2 40 1N,K1 0001 \leq N,K \leq 1 \ 000
3 48 Fară restricții suplimentare

Exemplu

echipe.in

5 2
2 3 1 5 4

echipe.out

12

Explicație

Sub-echipele formate sunt: {1, 2, 3}\{ \texttt{1, 2, 3} \} si {4, 5}\{ \texttt{4, 5} \}

Iar așa arată pasele pe care le vor face jucătorii, iar modurile în care se pot da roluri sunt următoarele (rir_i indică rolul jucătorului ii) :

# r₁ r₂ r₃ r₄ r₅
1 1 1 2 1 2
2 1 1 2 2 1
3 1 2 1 1 2
4 1 2 1 2 1
5 1 2 2 1 2
6 1 2 2 2 1
7 2 1 1 1 2
8 2 1 1 2 1
9 2 1 2 1 2
10 2 1 2 2 1
11 2 2 1 1 2
12 2 2 1 2 1

Contest info

Official contest

Start time: 1687590600000

Total duration: 4h0m0s

Status: Ended

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