码迷,mamicode.com
首页 > 其他好文 > 详细

Matrix-tree定理 spoj HIGH

时间:2017-12-14 03:51:03      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:一个   poj   sizeof   namespace   blog   spoj   pac   int   printf   

Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等变换求出行列式的绝对值就是答案。

附上代码——by VANE

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll c[13][13],tmp[13];
int main()
{
    int T,m,u,v;
    ll t,ans;
    scanf("%d",&T);
    while(T--)
    {
        memset(c,0,sizeof c);
        scanf("%d%d",&n,&m);
        while(m--)
        {
            scanf("%d%d",&u,&v);
            u--;v--;
            c[u][v]--;c[v][u]--;
            c[u][u]++;c[v][v]++;
        }
        ans=1;
        for(int i=1;i<n;++i)
        {
            for(int j=i+1;j<n;++j)
            while(c[j][i])
            {
                t=c[i][i]/c[j][i];
                for(int k=i;k<n;++k) c[i][k]-=c[j][k]*t;
                for(int k=i;k<n;++k) swap(c[i][k],c[j][k]);
                ans=-ans;
            }
            ans*=c[i][i];
            if(!ans) break;
        }
        ans=max(ans,-ans);
        printf("%lld\n",ans);
    }
}

 

Matrix-tree定理 spoj HIGH

标签:一个   poj   sizeof   namespace   blog   spoj   pac   int   printf   

原文地址:http://www.cnblogs.com/nbwzyzngyl/p/8035005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!