Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- +---------------------------------------------+
- | |
- | Copytright, MinaMagdy, 11/04/2023 (01:24) |
- | |
- +---------------------------------------------+
- */
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- #include <ext/pb_ds/tree_policy.hpp>
- using namespace std;
- using namespace __gnu_pbds;
- #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
- #define multi_ordered_set tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update>
- #define endl "\n"
- #define MOD 1000000007
- #define INF 2000000000
- #define all(s) s.begin(), s.end()
- #define rall(s) s.rbegin(), s.rend()
- #define sz(x) int(x.size())
- typedef long long ll;
- typedef long double ld;
- typedef unsigned long long ull;
- #include <ext/numeric>
- using namespace __gnu_cxx;
- typedef vector<vector<int>> matrix;
- struct mul {
- int n;
- int mod;
- mul(int n, int mod = 1e9 + 7) : n(n), mod(mod) {}
- matrix operator()(const matrix &a, const matrix &b) {
- matrix c(n, vector<int>(n, 0));
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- for (int k = 0; k < n; k++) {
- c[i][j] += a[i][k] * 1ll * b[k][j] % mod;
- if (c[i][j] >= mod)
- c[i][j] -= mod;
- }
- }
- }
- return c;
- }
- };
- matrix identity_element(const mul &m) {
- matrix res(m.n, vector<int>(m.n, 0));
- for (int i = 0; i < m.n; i++)
- res[i][i] = 1;
- return res;
- }
- void solve() {
- int n, m, q;
- cin >> n >> m >> q;
- matrix a(n, vector<int>(n, 0));
- for (int i = 0; i < m; i++) {
- int u, v;
- cin >> u >> v;
- u--, v--;
- a[u][v] = 1;
- }
- map<int, matrix> mp;
- while (q--) {
- int s, e, k;
- cin >> s >> e >> k;
- s--, e--;
- if (!mp.count(k))
- mp[k] = power(a, k, mul(n));
- cout << mp[k][s][e] << endl;
- }
- }
- int main(void)
- {
- ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
- int testcase = 1;
- // cin >> testcase;
- while (testcase--)
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement