zoukankan      html  css  js  c++  java
  • CQOI2018 社交网络

    题目链接:戳我

    有向生成树计数。

    那么在这里补充一下矩阵树定理吧!

    • 度数矩阵-邻接矩阵(双向计数),去掉任意一行一列,剩下的式子高斯消元之后,对角线乘积是无向图的生成树个数。
    • 入度矩阵-邻接矩阵(单向边),去掉根相关的一行一列,剩下的式子高斯消元之后,对角线乘积是外向树的生成树个数。
    • 出度矩阵-邻接矩阵(单向边),去掉根相关的一行一列,剩下的式子高斯消元之后,对角线成绩是内向树的生成树个数。
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define MAXN 1010
    #define mod 10007
    using namespace std;
    int n,m,ans=1;
    int sum[MAXN][MAXN];
    int main()
    {
        #ifndef ONLINE_JUDGE
        freopen("ce.in","r",stdin);
        #endif
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;i++)
        {
            int u,v;
            scanf("%d%d",&v,&u);
            sum[v][v]++;
            sum[u][v]--;
        }
        for(int i=2;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                while(sum[j][i])
                {
                    int t=sum[i][i]/sum[j][i];
                    for(int k=i;k<=n;k++)
                    {
                        sum[i][k]=(sum[i][k]+mod-sum[j][k]*t%mod)%mod;
                        swap(sum[i][k],sum[j][k]);
                    }
                    ans*=-1;
                }
            }
        }
        for(int i=2;i<=n;i++) ans=1ll*ans*sum[i][i]%mod;
        printf("%d
    ",(ans+mod)%mod);
        return 0;
    }
    
    
  • 相关阅读:
    Cookie操作
    C# 操作Cookie类
    面向对象之struct
    高薪程序员都避开了那些坑【安晓辉】
    [转]C#之反射
    [转]正则表达式相关:C# 抓取网页类(获取网页中所有信息)
    membership 在web.config中配置信息
    面向对象之virtual
    面向对象之多态
    JAVA面向对象 接口
  • 原文地址:https://www.cnblogs.com/fengxunling/p/10909316.html
Copyright © 2011-2022 走看看