#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 20;
const int mod = 1e+9 + 7;
namespace mat {
int a[N][N];
int n,p=1;
void Clear() {
memset(a,0,sizeof a);
}
int Solve() {
int ans = 1;
for(int i = 1; i < n; i ++) {
for(int j = i + 1; j < n; j ++)
while(a[j][i]) {
int t = a[i][i] / a[j][i];
for(int k = i; k < n; k ++)
a[i][k] = (a[i][k] - t * a[j][k] + mod) % mod;
swap(a[i], a[j]);
ans = - ans;
}
ans = (ans * a[i][i]) % mod;
}
return (ans + mod) % mod;
}
void Make(int p,int q) {
a[p][q]--;
a[q][p]--;
a[p][p]++;
a[q][q]++;
}
} // namespace mat
int n;
vector <pair<int,int> > v[N];
signed main() {
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<n;i++) {
int t;
cin>>t;
for(int j=1;j<=t;j++) {
int t1,t2;
cin>>t1>>t2;
v[i].push_back(make_pair(t1,t2));
}
}
int ans = 0;
mat::n=n;
for(int i=0;i<1<<(n-1);i++) {
int t=__builtin_popcount(i);
mat::Clear();
for(int j=1;j<=(n-1);j++) {
if(i&(1<<(j-1))) {
for(int k=0;k<v[j].size();k++) {
mat::Make(v[j][k].first, v[j][k].second);
}
}
}
int tmp = mat::Solve();
ans += ((n-t-1)%2 ? -1 : 1)*tmp;
ans %= mod;
ans += mod;
ans %= mod;
}
cout<<ans<<endl;
}

[SHOI2016] 黑暗前的幻想乡 - 矩阵树定理,容斥的更多相关文章

  1. bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Sta ...

  2. bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥)

    bzoj4596/luoguP4336 [SHOI2016]黑暗前的幻想乡(矩阵树定理,容斥) bzoj Luogu 题解时间 看一看数据范围,求生成树个数毫无疑问直接上矩阵树定理. 但是要求每条边都 ...

  3. Luogu P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理+容斥原理

    真是菜到爆炸....容斥写反(反正第一次写qwq) 题意:$n-1$个公司,每个公司可以连一些边,求每个边让不同公司连的生成树方案数. 矩阵树定理+容斥原理(注意到$n$不是很大) 枚举公司参与与否的 ...

  4. 【BZOJ4596】【Luogu P4336】 [SHOI2016]黑暗前的幻想乡 矩阵树定理,容斥

    同样是矩阵树定理的裸题.但是要解决它需要能够想到容斥才可以. \(20\)以内的数据范围一定要试试容斥的想法. #include <bits/stdc++.h> using namespa ...

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

    P4336 [SHOI2016]黑暗前的幻想乡 矩阵树定理(高斯消元+乘法逆元)+容斥 ans=总方案数 -(公司1未参加方案数 ∪ 公司2未参加方案数 ∪ 公司3未参加方案数 ∪ ...... ∪ ...

  6. 【BZOJ 4596】 4596: [Shoi2016]黑暗前的幻想乡 (容斥原理+矩阵树定理)

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 324  Solved: 187 Description ...

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

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

  8. [ZJOI2016]小星星&[SHOI2016]黑暗前的幻想乡(容斥)

    这两道题思路比较像,所以把他们放到一块. [ZJOI2016]小星星 题目描述 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星. ...

  9. bzoj4596[Shoi2016]黑暗前的幻想乡 Matrix定理+容斥原理

    4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 464  Solved: 264[Submit][Sta ...

随机推荐

  1. Dev-C++如何创建源代码模板?

    Dev-C++如何创建源代码模板? 预览图片 按下Ctrl+N或者点击新建源代码,就会自动出现这些代码了 以下是操作步骤 编写你的模板 这里有我的样例: #include<iostream> ...

  2. centos7 升级sqlite3

    升级sqlite3 官网 点击 1.下载源码 wget https://www.sqlite.org/2019/sqlite-autoconf-3300100.tar.gz 2.解压,编译 .tar. ...

  3. Vue中vue-i18n结合element-ui实现国际化

    (一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "element ...

  4. pip 配置国内源

      网上已经有很多人介绍了,我写在这儿就是为了找起来方便. https://www.cnblogs.com/schut/p/10410087.html 这篇博客还是很有意思的,他介绍了两种方法.可以一 ...

  5. 配置 vim 过程中必须解决的问题

    网络问题 在使用 github 作为插件下载源的时候, 容易出现网络连接超时等错误 在使用 gitee 作为插件下载源的时候, 子模块可能会出现下载超时 解决方案有以下两个: 使用 VPN , 改善访 ...

  6. 关于 DP 的一些内容

    0.关于         动态规划是编程解题的一种重要手段.1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解 ...

  7. 极其实用的JS单行代码

    个人博客 地址:https://www.wenhaofan.com/a/20190629211647 1.强制布尔值 要将变量强制转换为布尔值而不更改其值: const myBoolean = !!  ...

  8. JS_0001:js常用知识点

    1,获取常量值 ${} var port = 8080; console.log(`服务器运行在http://${hostName}:${port}`);   2,js中从服务器中获取值,并赋值給ht ...

  9. jQuery笔记(六)jQuery之Ajax

    jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯. 废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对 ...

  10. 虚拟机ifconfig 没有IP地址显示

    虚拟机centos 找不到IP地址 -----------------下图解决后有ip地址----------------------- 1.  查看网络IP和网关     >>1.  查 ...