博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1488: [HNOI2009]图的同构 polay
阅读量:6848 次
发布时间:2019-06-26

本文共 622 字,大约阅读时间需要 2 分钟。

题意:两个图AB同构:把A的顶点重新编号后与B一模一样。求n个顶点的图一共有多少个?(同构的算一种)

思路:边有n*(n-1)/2,这些边可以有可以没有,所以等同于边的颜色有两种。然后将n划分成循环节的和,n=L1+L2+……+Lm。现在需要把点置换映射到边置换。两个边在一个点循环节(大小L)时边置换循环节为L/2,否则为Gcd(L1,L2)。然后就是计算(L1,L2,……,Lm)这种划分的个数,设m个循环有t种数字,每种数字个数p1,p2,……,pt,那么划分个数为:n!/(L1*L2……*Lm*p1!*……*pt!)。

 

const int mod=997; int p[N];int n;int f[N][2],cnt; void init(){    p[0]=1;    int i;    for(i=1;i
re) return; DFS(t+1,re); int i; for(i=1;i*t<=re;i++) { f[cnt][0]=t; f[cnt++][1]=i; DFS(t+1,re-i*t); cnt--; }} int main(){ init(); RD(n); DFS(1,n); ans=ans*gcdReverse(p[n],mod)%mod; PR(ans);}

 

转载地址:http://ygoul.baihongyu.com/

你可能感兴趣的文章
Apache与Tomcat的区别
查看>>
mysql—Access denied for user 'root'@'localhost' (using password:NO)
查看>>
hibernate 懒加载异常
查看>>
python3的zip函数
查看>>
Paxos算法详细图解
查看>>
如何用Exchange Server 2003 构建多域名邮件系统
查看>>
httpd服务如何开机启动
查看>>
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
查看>>
android 1.6中LinearLayout getBaseline函数的一个bug
查看>>
shell3
查看>>
分享几个好用的工具,有效提升工作效率
查看>>
论北京北漂的家人们
查看>>
delphi 检查用户输入必须是汉字串
查看>>
思科交换机和路由器设备实现DHCP功能
查看>>
MongoDB安装与操作大全
查看>>
人我的是好有是的好sula
查看>>
编译工程时报java:[1,0] illegal character: \65279问题排查与解决过
查看>>
RHEL6子接口及双网卡绑定配置
查看>>
常见系统故障排查
查看>>
正则验证手机号是否合法
查看>>