zoukankan      html  css  js  c++  java
  • 牛客小白月赛13 E(图、矩阵幂)

    AC通道
    如果建立第一天某点到某点有几条路的矩阵,做k次矩阵乘就是第k天某点到某点有几条路。统计即可。

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int maxn = 101, mod = 1e9 + 7;
    int N, M, K, S, ans;
    
    struct Matrix {
        int v[maxn][maxn], n;
        
        Matrix(int n) { memset(v, 0, sizeof v); this->n = n; }
        
        Matrix operator * (const Matrix &A) const {
            Matrix ret(n);
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    for (int k = 0; k < n; k++)
                        ret.v[i][j] = ((ll)ret.v[i][j] + (ll)v[i][k] * A.v[k][j] % mod) % mod;
            return ret;
        }
        
        Matrix operator ^ (int b) const {
            Matrix ret(n);
            Matrix A = *this;
            for (int i = 0; i < n; i++)
                ret.v[i][i] = 1;
            for (; b; b >>= 1) {
                if (b & 1)    ret = ret * A;
                A = A * A;
            }
            return ret;
        }
    };
    
    int main() {
        scanf("%d %d %d %d", &N, &M, &K, &S);
        Matrix A(N);
        for (int i = 0; i < M; i++) {
            int u, v;
            scanf("%d %d", &u, &v);
            A.v[--u][--v]++;
        }
        A = A ^ K;
        S--;
        for (int i = 0; i < N; i++) {
            if (i != S) {
                ans = ((ll)ans + A.v[S][i]) % mod;
            }
        }
        printf("%d
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    常见的arp欺骗
    ARP欺骗分析
    周总结
    周总结
    周总结
    win10下 修改host文件 新添域名不生效
    周总结
    周总结
    周总结
    周总结
  • 原文地址:https://www.cnblogs.com/AlphaWA/p/10708834.html
Copyright © 2011-2022 走看看