- Language:
- Time limit: 1.00 s
- Memory limit: 512 MB
Verkossa on n solmua, jotka on numeroitu 1,2,\dots,n. Solmujen välillä on m kaarta, joita voi kulkea kumpaankin suuntaan. Seuraavassa verkossa n=4 ja m=5:
Polku solmusta toiseen voidaan esittää jonona (x_1,x_2,\dots,x_k), missä x_1 on alkusolmu, x_k on loppusolmu ja jokaisen kahden peräkkäisen solmun välillä on kaari. Esimerkiksi (1,2,4) tarkoittaa yllä olevan verkon polkua, joka kulkee ensin solmusta 1 solmuun 2 ja sitten solmusta 2 solmuun 4.
Tehtäväsi on laskea, monellako polulla solmusta 1 solmuun n solmujen määrä on melko lähellä pienintä mahdollista määrää. Tarkemmin sinun tulee laskea erilaiset polut, joissa on alle p ylimääräistä solmua.
Esimerkiksi kun p=3, sinun tulee laskea seuraavat polut yllä olevassa verkossa:
- 0 ylimääräistä solmua: (1,2,4) ja (1,3,4) (2 polkua)
- 1 ylimääräinen solmu: (1,2,3,4) ja (1,3,2,4) (2 polkua)
- 2 ylimääräistä solmua: (1,2,1,2,4), (1,2,1,3,4), (1,2,3,2,4), (1,2,4,2,4), (1,2,4,3,4), (1,3,1,2,4), (1,3,1,3,4), (1,3,2,3,4), (1,3,4,2,4), (1,3,4,3,4)
(10 polkua)
Syöte
Ensimmäisellä rivillä on kokonaisluvut n, m ja p: solmujen määrä, kaarten määrä ja parametri p.
Seuraavat m riviä esittävät kaaret. Jokaisella rivillä on kaksi kokonaislukua a ja b: solmujen a ja b välillä on kaari.
Voit olettaa, että solmujen 1 ja n välillä on polku ja jokaisen kahden solmun välillä on enintään yksi kaari.
Tuloste
Tulosta p kokonaislukua: halutut polkujen määrät.
Polkujen määrät voivat olla suuria, joten tulosta vastaukset modulo 10^9+7.
Esimerkki
Syöte:
4 5 3 1 2 1 3 2 3 2 4 3 4
Tuloste:
2 2 10
Osatehtävä 1 (9 pistettä)
- 2 \le n \le 10
- 1 \le m \le 20
- 1 \le p \le 10
Osatehtävä 2 (19 pistettä)
- 2 \le n \le 10^5
- 1 \le m \le 2 \cdot 10^5
- p = 2
Osatehtävä 3 (22 pistettä)
- 2 \le n \le 10^5
- 1 \le m \le 2 \cdot 10^5
- p = 3
Osatehtävä 4 (18 pistettä)
- 2 \le n \le 1000
- 1 \le m \le 2000
- 1 \le p \le 10
Osatehtävä 5 (32 pistettä)
- 2 \le n \le 10^5
- 1 \le m \le 2 \cdot 10^5
- 1 \le p \le 10
