Turism

Time limit: 0.8s Memory limit: 256MB Input: turism.in Output: turism.out

Alex, un mare entuziast al turismului, a decis să-și transforme pasiunea într-o afacere și să organizeze tururi ale orașului Bistrița. Orașul poate fi reprezentat ca un graf orientat al obiectivelor turistice, conectate direct de străzi. Totuși, dat fiind că abilitatea de a se orienta a lui Alex nu este comparabilă cu entuziasmul lui, organizarea traseelor este dificilă pentru el. În primul rând, el vrea să numere câte astfel de trasee există în oraș. Un traseu reprezintă o listă ordonată aa de kk obiective turistice, cu următoarele proprietăți:

  • De la nodul aia_i se poate ajunge în nodul ai+1a_{i+1}, pentru 1i<k1 \le i \lt k;
  • De la nodul aka_k se poate ajunge în nodul a1a_1.

Spunem că se poate ajunge de la nodul xx la nodul yy dacă există un drum de 00 sau mai multe străzi care începe în nodul xx și se termină în nodul yy. Există 22 tipuri de trasee turistice:

  • Tipul 11, în care obiectivele se pot repeta;
  • Tipul 22, în care obiectivele trebuie să fie distincte.

Cerință

Graful obiectivelor turistice este un graf orientat în care o muchie de la xx la yy reprezintă un drum direct de la nodul xx la nodul yy. Alex are nevoie de ajutorul vostru, pentru a determina câte trasee de lungime kk există pentru un tip dat de trasee turistice (Tipul 11 sau Tipul 22), pentru fiecare kk de la 11 la QQ.

Date de intrare

Prima linie conține TT, tipul traseului. A doua linie conține NN, MM și QQ, reprezentând numărul de noduri și de muchii ale grafului, respectiv kk-ul maxim pentru care Alex vrea să afle numărul de trasee. Următoarele MM linii conțin câte 2 numere xx, yy, reprezentând o muchie orientată de la xx la yy.

Date de ieșire

Pentru fiecare linie kk, de la 11 la QQ, se va afișa numărul de trasee de lungime kk, modulo 109+710^9 + 7.

Restricții și precizări

  • 1N300 0001 \leq N \leq 300 \ 000
  • 1M,Q1 000 0001 \leq M,Q \leq 1 \ 000 \ 000
# Punctaj Restricții
1 7 T=1T = 1, N6N \leq 6, M30M \leq 30, Q30Q \leq 30
2 15 T=1T = 1, N50N \leq 50, M100M \leq 100, Q50Q \leq 50
3 17 T=1T = 1, N103N \leq 10^3, M2103M \leq 2 \cdot 10^3, Q103Q \leq 10^3
4 21 T=1T = 1, N105N \leq 10^5, M2105M \leq 2 \cdot 10^5, Q105Q \leq 10^5
5 8 T=2T = 2, N103N \leq 10^3, M2103M \leq 2 \cdot 10^3, Q103Q \leq 10^3
6 20 T=2T = 2, N105N \leq 10^5, M2105M \leq 2 \cdot 10^5, Q105Q \leq 10^5
7 12 T=2T = 2, N3105N \leq 3 \cdot 10^5, M106M \leq 10^6, Q106Q \leq 10^6

Exemplul 1

turism.in

1
3 2 3
1 2
2 1

turism.out

3
5
9

Explicație

Traseele de lungime 11 sunt: (1)(1), (2)(2), (3)(3);
Traseele de lungime 22 sunt: (1,1)(1, 1), (1,2)(1, 2), (2,1)(2, 1), (2,2)(2, 2), (3,3)(3, 3);
Traseele de lungime 33 sunt: (1,1,1)(1, 1, 1), (1,1,2)(1, 1, 2), (1,2,1)(1, 2, 1), (2,1,1)(2, 1, 1), (1,2,2)(1, 2, 2), (2,1,2)(2, 1, 2), (2,2,1)(2, 2, 1), (2,2,2)(2, 2, 2), (3,3,3)(3, 3, 3).

Exemplul 2

turism.in

2
3 2 3
1 2
2 1

turism.out

3
2
0

Explicație

Traseele de lungime 11 sunt: (1)(1), (2)(2), (3)(3).
Traseele de lungime 22 sunt: (1,2)(1, 2), (2,1)(2, 1).

Exemplul 3

turism.in

1
5 4 10
1 2
2 3
3 1
3 4

turism.out

5
11
29
83
245
731
2189
6563
19685
59051

Exemplul 4

turism.in

2
6 7 4
1 2
2 3
3 4
4 5
5 3
3 1
3 6

turism.out

6
20
60
120

Exemplul 5

turism.in

1
8 9 15
1 2
2 3
3 4
2 1
4 5
5 6
6 7
7 8
8 2

turism.out

8
64
512
4096
32768
262144
2097152
16777216
134217728
73741817
589934536
719476260
755810045
46480318
371842544

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