UVA 10766 Organising the Organisation】的更多相关文章

题目描述: 一个由n个部门组成的公司现在需要分层,但是由于员工间的一些小小矛盾,使得他们并不愿意做上下级,问在满足他们要求以后有多少种分层的方案数? 解题思路: 生成树计数模板题,建立Kirchhoff矩阵,利用Matrix_tree定理求解. Kirchhoff矩阵:假设G为n*n矩阵,C为G的入度矩阵(i==j时,C[i][j]等于i的入度;i!=j时,C[i][j]等于零),A为G的邻接矩阵,那么就有Kirchhoff矩阵等于C-A. Matrix_tree定理:G的不同生成树的个数等于其…
https://vjudge.net/problem/UVA-10766 题意: 给出n, m, k.表示n个点,其中m条边不能直接连通,求生成树个数. 思路: 这也算个裸题,把可以连接的边连接起来,然后矩阵树计算一下即可. #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<sstream> #include<vector&g…
题意:给定一个公司的人数,然后还有一个boss,然后再给定一些人,他们不能成为直属上下级关系,问你有多少种安排方式(树). 析:就是一个生成树计数,由于有些人不能成为上下级关系,也就是说他们之间没有边,没说的就是有边,用Matrix-Tree定理,很容易就能得到答案,注意题目给定的可能有重复的. 对于基尔霍夫矩阵,就是度数矩阵,减去邻接矩阵,一处理就OK了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #i…
https://vjudge.net/problem/UVA-10766 题意: n个员工,除总经理外每个人只能有一个直接上级 有m对人不能成为直接的上下级关系 规定k为总经理 问员工分级方案 无向图生成树的个数与根无关 所以直接用矩阵树定理即可 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; ][]; ][]; int m…
HIGH - Highways   In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of ci…
Organising the Organisation 题目链接:https://vjudge.net/problem/UVA-10766 Description: I am the chief of the Personnel Division of a moderate-sized company that wishes to remain anonymous, and I am currently facing a small problem for which I need a skil…
题目链接戳这里 基尔霍夫矩阵裸题.构建基尔霍夫矩阵(度数矩阵-邻接矩阵),求他的任意\(n-1\)阶主子式的绝对值即为答案. 这题开始用java写,结果BigInteger太慢Tle了. 后来用c++写了个crt,不知道为什么wa了. 最后用long double强上最后输出转long long,ac了. 注意:给出的边可能有重复的. #include<cmath> #include<iostream> #include<cstring> #include<cst…
一开始我感觉是模板题  是不想写的 后来发现我的模板上没有 就敲了一遍 可以忽略这句屁话     在信息学竞赛中,有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少有涉及.事实上,生成树的计数是十分有意义的,在许多方面都有着广泛的应用. #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <v…
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 lon…
Input Output Sample Input 5 5 2 3 1 3 4 4 5 1 4 5 3 4 1 1 1 4 3 0 2 Sample Output 3 8 3 题意: 有一张图上有\(n\)个点,两两之间有一条边,现在切断\(m\)条边,求剩下的图中有多少种不同的生成树. 题解: 生成树计数 做这道题,需要三个预备知识: \(Kirchhoff\)矩阵 首先先构造两个矩阵 度数矩阵D:是一个\(N×N\)的矩阵,其中 \(D[i][j]=0(i≠j)\),\(D[i][i]=i\…