这个题貌似奶了一口trump,,,

本来看到一个公司一条边,而且N是那么科学,肯定要容斥了,然后蛋疼的想应该怎么求生成树。。

本来一开始乱说了个矩阵树定理,然而忘了,就像奇奇怪怪的东西了。。然并卵,正解就是矩阵树定理,IQ--

需要注意的是,求解行列式和一般的线性方程是不一样的,行列式是消去本行,然后交换,变号。。。

 1 #include <bits/stdc++.h>
 2 #define LL long long
 3 using namespace std;
 4 inline int ra()
 5 {
 6     int x=0,f=1; char ch=getchar();
 7     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
 8     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
 9     return x*f;
10 }
11
12 const int mod=1e9+7;
13
14 LL g[20][20];
15 int n;
16 vector<pair<int , int > > orz[20];
17
18 int Gauss()
19 {
20     LL ans=1;
21     for (int i=1; i<n; i++)
22     {
23         for (int j=i+1; j<n; j++)
24             while (g[j][i])
25             {
26                 LL t=g[i][i]/g[j][i];
27                 for (int k=i; k<n; k++)
28                     g[i][k]=(g[i][k]-g[j][k]*t)%mod;
29                 swap(g[i],g[j]);
30                 ans=-ans;
31             }
32         ans=ans*g[i][i]%mod;
33         if (!ans) return 0;
34     }
35     return (ans+mod)%mod;
36 }
37
38 int main(int argc, char const *argv[])
39 {
40     n=ra();
41     for (int i=1; i<n; i++)
42     {
43         int m=ra();
44         for (int j=1; j<=m; j++)
45         {
46             int x=ra(),y=ra();
47             orz[i].push_back(make_pair(x,y));
48         }
49     }
50     int ans=0;
51     for (int i=0; i<1<<(n-1); i++)
52     {
53         int cnt=0; memset(g,0,sizeof(g));
54         for (int j=1; j<n; j++)
55             if ((i>>(j-1))&1)
56             {
57                 for (int k=0; k<orz[j].size(); k++)
58                 {
59                     int x=orz[j][k].first,y=orz[j][k].second;
60                     g[x][x]++; g[y][y]++;
61                     g[x][y]--; g[y][x]--;
62                 }
63                 cnt++;
64             }
65         if ((n-cnt)&1) ans=(ans+Gauss())%mod; else ans=(ans-Gauss()+mod)%mod;
66     }
67     printf("%d\n",ans);
68     return 0;
69 }

转载于:https://www.cnblogs.com/ccd2333/p/6800004.html

bzoj 4596: [Shoi2016]黑暗前的幻想乡相关推荐

  1. ●BZOJ 4596 [Shoi2016]黑暗前的幻想乡

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4596 题解: 容斥,矩阵树定理,矩阵行列式 先说说容斥:(一共有 N-1个公司) 令 f[i ...

  2. Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理,子集反演)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理) Problem n≤1 ...

  3. P4336 [SHOI2016]黑暗前的幻想乡

    题目 P4336 [SHOI2016]黑暗前的幻想乡 做法 每种颜色恰好一条边,有点难处理啊 根据套路,数据范围这么小,容斥一下所有的情况就可以了 对每种颜色进行状压,表这次只能选这些颜色,做\(n- ...

  4. 【BZOJ4596】[Shoi2016]黑暗前的幻想乡 容斥+矩阵树定理

    [BZOJ4596][Shoi2016]黑暗前的幻想乡 Description 幽香上台以后,第一项措施就是要修建幻想乡的公路.幻想乡有 N 个城市,之间原来没有任何路.幽香向选民承诺要减税,所以她打 ...

  5. [BZOJ4596][Shoi2016]黑暗前的幻想乡-Matrix Tree 矩阵树定理

    黑暗前的幻想乡 Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类)博丽灵梦和八云紫等人整日 ...

  6. BZOJ4596:[SHOI2016]黑暗前的幻想乡——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4596 https://www.luogu.org/problemnew/show/P4336#su ...

  7. SHOI2016 黑暗前的幻想乡

    题目链接:戳我 幻想乡是个什么东西??(逃 矩阵树定理+容斥 就是设\(dp[i]\)表示至多i个公司修建道路,那么我们有\(ans=dp[n-1]-dp[n-2]+dp[n-3]......\)ba ...

  8. [luogu3244 SHOI2016] 黑暗前的幻想乡(容斥原理+矩阵树定理)

    传送门 Description 给出 n 个点和 n−1 种颜色,每种颜色有若干条边.求这张图多少棵每种颜色的边都出现过的生成树,答案对 109+7 取模. Input 第一行包含一个正整数 N(N& ...

  9. 洛谷 P4336 [SHOI2016] 黑暗前的幻想乡 题解

    前置芝士 Kirchhoff 矩阵树定理 Kirchhoff矩阵树定理解决了一个问题:对于一个确定的无向图,其究竟有多少个生成树? 对于一个无向图,我们拥有其邻接矩阵 A\bf{A}A. 这里的邻接矩 ...

最新文章

  1. 两款接口测试工具推荐
  2. 急速JavaScript全栈教程
  3. SQL server 2000建立远程连接(局域网)
  4. C++ decltype关键字
  5. 织梦dedecms search.php注入漏洞exp,DedeCms V57 plus/search.php 文件SQL注射0day漏洞
  6. web前端细解cookie那些事
  7. JS在页面限制checkbox最大复选数
  8. cudnn版本_踩过cuda、cudnn的坑[持续更新]
  9. android studio创建9.patch图片,使用时出现Error: Duplicate resources
  10. C++中main函数的返回类型必须是int
  11. 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改...
  12. 递归加载无限级分类,虽然我觉得效率不太好。
  13. dell12v18a怎么改_拆修DELL 12V 18A电源!
  14. Matlab 仿真——直流电机速度控制(5)通过频域分析进行控制器设计
  15. html 网页地图集制作ECHARTS,在页面使用echarts的地图(解决地图不完整)
  16. 计算机异常断电后无法启动,电脑突然断电后开不了机怎么办【解决方法】
  17. 不需要任何化学药剂的污水处理设备(微纳米气泡技术)
  18. QMAIL简明安装(转)
  19. 实验(三):单片机I/O口实验-模拟开关灯
  20. 开源阅读书源_最好用的阅读软件之一

热门文章

  1. Linux下最快速共享目录的方法
  2. jquery实现复选框checkbox全选,取消全选
  3. Linux虚拟机复制,网卡找不到
  4. 8月20日全球六大国际域名解析量变化情况统计报告
  5. java 生成静态html的一段代码
  6. 通过讲课来建立自己的知识系统
  7. html如何整齐排列选择框,html – 如何均匀地排列多个内嵌块元素?
  8. java堆栈类在哪个包里_Java堆栈Stack类的使用
  9. c语言在单行文本上删除子串,一道比较简单的题——PTA基础编程题目集 7-29 删除字符串中的子串 C语言试解-Go语言中文社区...
  10. lsof deleted java,lsof__强大的系统监控、诊断命令