Pagini recente » Cod sursa (job #371063) | Cod sursa (job #2499152) | Cod sursa (job #1996672) | Cod sursa (job #2894086) | Cod sursa (job #3349103)
#include <bits/stdc++.h>
#define pii pair<int,int>
#define pb push_back
#define ll long long
using namespace std;
ifstream fin ("ciclueuler.in");
ofstream fout ("ciclueuler.out");
const int nmax = 1e2,mod=1e9+7;
typedef ll matrix[nmax][nmax];
matrix T;
int n;
void mult (matrix a, matrix b) {
matrix r;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
r[i][j]=0;
for(int k=0;k<n;k++)
r[i][j]+=a[i][k]*b[k][j]%mod;
r[i][j]%=mod;
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=r[i][j];
}
void power (int power) {
matrix r;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
r[i][j] = (i == j);
while (power) {
if (power % 2)
mult (r, T);
mult (T, T);
power /= 2;
}
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
T[i][j] = r[i][j];
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int m, k;
cin >> n >> m >> k;
while (m--) {
int st, dr;
cin >> st >> dr;
st--, dr--;
T[dr][st]++;
}
power (k);
cout << T[n - 1][0];
return 0;
}