zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    title中的小图标
    JS
    浏览器的差距
    浏览器的前缀
    布局
    。。。 付解决浏览器兼容问题的两种方法
    form标签
    position讲解
    标题文档流与浮动
    css层叠问题
  • 原文地址:https://www.cnblogs.com/yijiull/p/7860295.html
Copyright © 2011-2022 走看看