BZOJ3659 : Which Dreamed It
首先判断一下是否无解,并剔除孤立点。
根据best theorem,有向图中以$i$为起点的欧拉回路个数为:
以$i$为根的树形图个数$\times\prod_{i=1}^n (deg(i)-1)!$。
根据matrix tree theorem,以$i$为根的树形图个数$=$基尔霍夫矩阵去掉第$i$行第$i$列的行列式。
$ans=以1为起点的欧拉回路个数\times 1的度数$。
高斯消元即可,时间复杂度$O(n^3\log P)$。
#include<cstdio>
typedef long long ll;
const int N=110,M=200010,P=1000003;
int n,m,i,j,k,x,y,in[N],ou[N],vis[N],g[N][N];ll f[M],a[N][N],ans;
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
void dfs(int x){
vis[x]=++m;
for(int i=1;i<=n;i++)if(g[x][i]&&!vis[i])dfs(i);
}
inline void swap(ll&a,ll&b){ll c=a;a=b;b=c;}
ll det(int n){
ll ans=1;bool flag=1;
for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=(a[i][j]%P+P)%P;
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++)while(a[j][i]){
ll t=a[i][i]/a[j][i];
for(k=i;k<=n;k++)a[i][k]=(a[i][k]+P-t*a[j][k]%P)%P;
for(k=i;k<=n;k++)swap(a[i][k],a[j][k]);
flag^=1;
}
ans=ans*a[i][i]%P;
if(!ans)return 0;
}
if(!flag)ans=P-ans;
return ans;
}
int solve(){
for(m=0,i=1;i<=n;i++)in[i]=ou[i]=vis[i]=0;
for(i=0;i<=n;i++)for(j=0;j<=n;j++)a[i][j]=g[i][j]=0;
int ed=0;
for(i=1;i<=n;i++)for(read(k);k--;g[i][j]++)read(j),ed++;
for(dfs(i=1);i<=n;i++)if(!vis[i]&&g[i])return 0;
for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(g[i][j]){
x=vis[i],y=vis[j];
ou[x]+=g[i][j];in[y]+=g[i][j];
a[x-1][y-1]-=g[i][j],a[x-1][x-1]+=g[i][j];
}
for(i=1;i<=m;i++)if(in[i]!=ou[i])return 0;
if(m==1)return f[g[1][1]];
ans=det(m-1)*in[1];
for(i=1;i<=m;i++)ans=ans*f[in[i]-1]%P;
return ans;
}
int main(){
for(f[0]=i=1;i<M;i++)f[i]=f[i-1]*i%P;
while(1){
read(n);
if(!n)return 0;
printf("%d\n",solve());
}
}
BZOJ3659 : Which Dreamed It的更多相关文章
- English trip V1 - 21. I dreamed dream Teacher:Corrine Key: past tense(过去式)
In this lesson you will learn to describe an experience. 本课将会学习描述一次经历 课上内容(Lesson) 词汇(Key Word ) # ...
- 【BZOJ 3659】 3659: Which Dreamed It (Matrix-Tree&BEST theorem )
3659: Which Dreamed It Time Limit: 20 Sec Memory Limit: 1024 MBSubmit: 134 Solved: 41 Description ...
- English trip M1 - AC11 I Dreamed a Dream? 我做了一个梦 Teacher:Lamb
In this lesson you will learn to describe an experience. 这节课你讲学习到描述经历 课上内容(Lesson) 词汇(Key Word ) 句型 ...
- Lesson 22 A glass envolops
Text My daughter, Jane, never dreamed of receiving a letter from a girl of her own age in Holland. L ...
- python基础-文件操作
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r ,只读模式[默认模式,文件必须存在,不存在则抛出异 ...
- Python之路,Day3 - Python基础3
一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- Python之路第一课Day3--随堂笔记(文件操作)
一.集合的介绍 1.集合操作 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 常用操作 s = se ...
- Python之路第一课Day2--随堂笔记
入门知识拾遗 一.bytes类型 bytes转二进制然后转回来 msg="张杨" print(msg) print(msg.encode("utf-8")) p ...
- 第一篇英文短文《It All Starts With A Dream》
http://www.ximalaya.com/#/17209107/sound/6883165 Dreaming. Do you or don’t you? Do you dream about t ...
随机推荐
- 1.1-java创建包和类的方法
1.new-package-命名方法com打头.中间名称.后台要创建的class 2.创建class- new-class 选择一下主方法 代码示例 编译完保存一下就能输出信息,一直没有保存才 ...
- Maven构建Hadoop Maven构建Hadoop工程
一.安装maven linux eclipse3.6.1 maven安装 二:官网依赖库 我们可以直接去官网查找我们需要的依赖包的配置pom,然后加到项目中. 官网地址:http://mvnrepos ...
- 理解Miller-Rabbin算法
转自:http://www.dxmtb.com/blog/miller-rabbin/ 普通的素数测试我们有O(√ n)的试除算法.事实上,我们有O(slog³n)的算法. 定理一:假如p是质数,且( ...
- ssh -v root@xxxxx 显示登录的细节
[root@ok .ssh]# ssh -v root@10.100.2.84 OpenSSH_5.3p1, OpenSSL Feb debug1: Reading configuration dat ...
- DES加密算法实现
好久没写博客了,正好趁着实现网络工程与安全的DES算法的功夫,把代码发上来. DES的介绍可见:DES加密 原理不赘述了..实在太多,其实就是一个形式化算法,按部就班的实现就可以,只不过有些繁琐,我写 ...
- hdu 2393:Higher Math(计算几何,水题)
Higher Math Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- AOJ789 买酒
买酒 Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MBTotal Submission: 70 Submis ...
- 使用 Log4Net 记录日志
第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的 log4net-1.2.11-bin-n ...
- web magic 小结
缘起 写了多年的程序,鲜有产出物,于是最近打算做个不可说的东西来祭奠逝去的青春.数据,是一个程序的起点,我们没有数以亿计的用户,无法让活跃用户给我们产生数据,那就只能去别人的站点上借点数据了.这个功能 ...
- 验证备份前设置CONFIGURE CONTROLFILE AUTOBACKUP ON/OFF; 的区别
关于rman的,环境: oracle 10.2.0 rman nocatalog方式 1.首先设置 CONFIGURE CONTROLFILE AUTOBACKUP ON; 然后进行数据库全备份 RM ...