zoukankan      html  css  js  c++  java
  • 「UVA10766」Organising the Organisation(生成树计数)

    BUPT 2017 Summer Training (for 16) #6C

    题意

    n个点,完全图减去m条边,求生成树个数。

    题解

    注意可能会给重边。
    然后就是生成树计数了。

    代码

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define N 101
    #define eps (1e-8)
    #define mem(x,v) memset(x,v,sizeof(x))
    typedef long long ll;
    using namespace std;
    int n,m,k;
    ll g[N][N];
    int sgn(double x){
    	return x>eps?1:(x<-eps?-1:0);
    }
    
    ll det(int n){
    	int i,j,k;
    	ll ans=1,t;
    	for(i=0;i<n;++i){
    		for(j=i+1;j<n;++j)
    			while(g[j][i]){
    				t=g[i][i]/g[j][i];
    				for(k=i;k<n;++k)
    					g[i][k]-=g[j][k]*t;
    				swap(g[i],g[j]);
    				ans=-ans;
    			}
    		if(g[i][i]==0)return 0L;
    		ans=ans*g[i][i];
    	}
    	return ans;
    }
    
    int main(){
    	while(~scanf("%d%d%d",&n,&m,&k)){
    		mem(g,-1);
    		for(int i=0;i<n;++i)
    			g[i][i]=0;
     
    		for(int i=0;i<m;++i){
    			int u,v;
    			scanf("%d%d",&u,&v);
    			--u;--v;//!!!
    			g[u][v]=g[v][u]=0;
    		}
    		for(int i=0;i<n;++i)
    			for(int j=i+1;j<n;++j){
    				if(g[i][j]){
    					++g[i][i];
    					++g[j][j];
    				}
    			}
    		printf("%lld
    ",det(n-1));
    	}
    	return 0;
    }
    
  • 相关阅读:
    小网络的激活函数
    Dual Path Networks
    RT600之Mailbox
    RT600之OTFAD
    RSA算法详解
    RT600之SB
    RT600之master key
    RT600之PUF
    RT600 Boot详解
    RT如何生成image
  • 原文地址:https://www.cnblogs.com/flipped/p/7252556.html
Copyright © 2011-2022 走看看