#include #include using namespace std; using ll = long long int; using Matrix = vector>; Matrix matpow(Matrix mat, ll t){ const int n = mat.size(); Matrix ans = Matrix(n, vector(n, 0)); for(int i = 0; i < n; i++) ans[i][i] = 1; while(t > 0){ if(t & 1){ Matrix newans = Matrix(n, vector(n, 0)); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ for(int k = 0; k < n; k++) newans[i][j] |= ans[i][k] * mat[k][j]; } } ans = newans; } Matrix newmat = Matrix(n, vector(n, 0)); for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ for(int k = 0; k < n; k++) newmat[i][j] |= mat[i][k] * mat[k][j]; } } mat = newmat; t >>= 1; } return ans; } int main(){ ll n, m, t; cin >> n >> m >> t; Matrix mat = Matrix(n, vector(n, 0)); for(int i = 0; i < m; i++){ int a, b; cin >> a >> b; mat[b][a] = 1; } mat = matpow(mat, t); int ans = 0; for(int i = 0; i < n; i++) ans += mat[i][0]; cout << ans << endl; return 0; }