• Organising the Organisation UVA


    Organising the Organisation

    UVA - 10766

    生成树计数

    要用到Matric-Tree定理。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define LL long long
     4 const int maxn = 52;
     5 const long double eps = 1e-8;
     6 long double a[maxn][maxn];
     7 int vis[maxn][maxn];
     8 int dcmp(long double x){
     9     if(fabs(x) < eps) return 0;
    10     return x < 0 ? -1 : 1;
    11 }
    12 long double solve(long double a[][maxn], int n){
    13     long double ans = 1;
    14     int cnt = 0;
    15     for(int i = 0; i < n; i++){
    16         if(dcmp(a[i][i]) == 0){
    17             int j;
    18             for(j = i + 1; j < n; j++){
    19                 if(!dcmp(a[j][i])) break;
    20             }
    21             if(j == n){
    22                 return 0;
    23             }
    24             for(int k = i; k < n; k++){
    25                 swap(a[i][k], a[j][k]);
    26             }
    27             cnt++;
    28         }
    29         ans *= a[i][i];
    30         for(int j = i + 1; j < n; j++){
    31             long double ta = a[j][i] / a[i][i];
    32             for(int k = i; k < n; k++){
    33                 a[j][k] -= ta * a[i][k];
    34             } 
    35         }
    36     }
    37     if(cnt & 1) ans = -ans;
    38     return ans;
    39 }
    40 
    41 int main(){
    42     int n, m, k;
    43     while(scanf("%d %d %d", &n, &m, &k) != EOF){
    44         memset(vis, 0, sizeof(vis));
    45         memset(a, 0, sizeof(a));    
    46         for(int i = 0; i < m; i++){
    47             int u, v;
    48             scanf("%d %d", &u, &v);
    49             u--;
    50             v--;
    51             vis[u][v] = vis[v][u] = 1;
    52         }
    53         for(int i = 0; i < n; i++){
    54             for(int j = 0; j < n; j++){
    55                 if(!vis[i][j] && i != j){
    56                     a[i][i]++;
    57                     a[i][j] = -1;
    58                 }
    59             }
    60         }
    61         printf("%.0f
    ", (double)solve(a, n-1));
    62     }    
    63 }
    View Code
  • 相关阅读:
    Git操作命令2-在Git仓库里管理文件历史-分支操作
    mvvmlight框架搭建VS版本不同导致的问题
    wpf命令详解
    wpf触发器
    wpf控件模型
    wpf中Interaction.Behaviors详解
    wpf附加属性详解
    wpf依赖属性概述
    wpf体系结构
    MySql5.7下载安装配置教程
  • 原文地址:https://www.cnblogs.com/yijiull/p/7860295.html
Copyright © 2020-2023  润新知