有向图欧拉回路个数

BZOJ 3659 但是没有这道题了  直接贴一个别人的板子吧

欧拉回路:存在一条路径经过所有的边刚好1次

有向图欧拉回路存在充要条件:①图连通;②对于所有点都满足出度=入度

BEST 定理   https://en.wikipedia.org/wiki/BEST_theorem

定理没仔细看 这个东西感觉不需要搞得非常懂 定理而已。

我只记住了公式 tw(G)表示外向生成树个数,deg表示入度出度都一样 相等的嘛。

当然欧拉回路因为是回路所以存在循环同构,例如下图:

1->2;2->1;1->3;3->1

欧拉回路其实只有1种,但是如果算路径走法的话就会有2种

1 2 1 3 1 和 1 3 1 2 1

这个时候sum还要再乘上x点的出度

https://blog.csdn.net/popoqqq/article/details/77017325

https://blog.csdn.net/Jaihk662/article/details/79338437

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
#define mod 1000003
LL Jz[][], out[], jc[] = {};
int main(void)
{
LL ans, A, B, P, temp;
int n, i, j, k, m, x;
for(i=;i<=;i++)
jc[i] = jc[i-]*i%mod;
while(scanf("%d", &n), n!=)
{
memset(Jz, , sizeof(Jz));
for(i=;i<=n;i++)
{
scanf("%d", &m);
out[i] = m;
while(m--)
{
scanf("%d", &x);
Jz[i][x]--, Jz[x][x]++;
}
}
if(n== && out[]==)
{
printf("1\n");
continue;
}
n -= ;
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
Jz[i][j] = (Jz[i+][j+]+mod)%mod;
}
ans = ;
for(i=;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(Jz[j][i])
break;
}
if(j!=i)
{
ans = mod-ans;
for(k=i;k<=n;k++)
swap(Jz[i][k], Jz[j][k]);
}
for(j=i+;j<=n;j++)
{
A = Jz[i][i], B = Jz[j][i];
while(B)
{
P = A/B, temp = A, A = B, B = temp%B;
ans = mod-ans;
for(k=i;k<=n;k++)
{
Jz[i][k] = (Jz[i][k]-P*Jz[j][k]%mod+mod)%mod;
swap(Jz[i][k], Jz[j][k]);
}
}
}
ans = ans*Jz[i][i]%mod;
}
if(ans==)
{
printf("0\n");
continue;
}
n += ;
for(i=;i<=n;i++)
ans = ans*jc[out[i]-]%mod;
ans = ans*out[]%mod;
printf("%lld\n", ans);
}
return ;
}
/*
3
2 2 3
1 1
1 1
*/

有向图欧拉回路个数 BEST定理的更多相关文章

  1. bzoj 1515 [POI2006]Lis-The Postman 有向图欧拉回路

    LINK:Lis-The Postman 看完题觉得 虽然容易发现是有向图欧拉回路 但是觉得很难解决这个问题. 先分析一下有向图的欧拉回路:充要条件 图中每个点的入度-出度=0且整张图是一个强连通分量 ...

  2. poj 1386 Play on Words(有向图欧拉回路)

    /* 题意:单词拼接,前一个单词的末尾字母和后一个单词的开头字母相同 思路:将一个单词的开头和末尾单词分别做两个点并建一条有向边!然后判断是否存在欧拉回路或者欧拉路 再次强调有向图欧拉路或欧拉回路的判 ...

  3. POJ 2230 Watchcow(有向图欧拉回路)

    Bessie's been appointed the new watch-cow for the farm. Every night, it's her job to walk across the ...

  4. LOJ-10106(有向图欧拉回路的判断)

    题目链接:传送门 思路: (1)将每个单词视为有向路径,单词的起始字母是起始节点,末尾字母是终止节点,然后找由字母建立的有向图 是否是欧拉图或者半欧拉图. (2)先用并查集判断是否连通,再判断入度与出 ...

  5. 算法笔记_148:有向图欧拉回路求解(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 Description A catenym is a pair of words separated by a period such that t ...

  6. 算法笔记_147:有向图欧拉回路判断应用(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 Description In order to make their sons brave, Jiajia and Wind take them t ...

  7. bzoj 4897 天赋 有向图的矩阵数定理

    4894: 天赋 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 104  Solved: 80[Submit][Status][Discuss] De ...

  8. 行列式&矩阵树定理

    行列式: 参考 oi-wiki 定义 对于一个\(n*n\)的矩阵A行列式取值(标量) \(det(A)=|A|=\sum\limits_p(-1)^{\tau(p)}\prod\limits_{i= ...

  9. Matrix-tree 定理的一些整理

    \(Matrix-tree\) 定理用来解决一类生成树计数问题,以下前置知识内容均是先基于无向无权图来介绍的.有关代数余子式的部分不是很明白,如果有错误还请指出-- 部分内容参考至:\(Blog\_1 ...

随机推荐

  1. Eric's并发用户数估算与Little定律的等价性

    在国内性能测试的领域有一篇几乎被奉为大牛之作的经典文章,一个名叫Eric Man Wong 于2004年发表了名为<Method for Estimating the Number of Con ...

  2. SQL 导出csv

    https://jingyan.baidu.com/album/4b07be3c466b5d48b280f37f.html?picindex=9

  3. js数组遍历的常用的几种方法以及差异和性能优化

    <script type="text/javascript"> /*对比: 1.map速度比foreach快 2.map会返回一个新数组,不对原数组产生影响,forea ...

  4. Linux OpenGL 实践篇-11-shadow

    OpenGL 阴影 在三维场景中,为了使场景看起来更加的真实,通常需要为其添加阴影,OpenGL可以使用很多种技术实现阴影,其中有一种非常经典的实现是使用一种叫阴影贴图的实现,在本节中我们将使用阴影贴 ...

  5. WEB前端研发工程师编程能力成长之路(2)(转)

    WEB前端研发工程师编程能力成长之路(2)   四.[入微] 最强解决方案.你能够走在需求的前面,将当前需求里有的.没有直接提出来的.现在暂时没有但将来可能有的等等,及前端编程潜规则等各个方方面面都综 ...

  6. (转)使用JDK中的Proxy技术实现AOP功能

    http://blog.csdn.net/yerenyuan_pku/article/details/52863780 AOP技术在企业开发中或多或少都会用到,但用的最多的大概就是做权限系统时,在做权 ...

  7. Docker下redis的主从配置

    1.拉取redis镜像docker pull redis2.启动3个redis容器服务,分别使用到6379.6380.6381端口docker run --name redis-6379 -p 637 ...

  8. app自动化配置信息

    caps={    "platformName":"Android",#平台名称    "platformVersion":"6. ...

  9. Java 编程下 Eclipse/myeclipse 如何设置单行代码显示的最大宽度

    http://www.cnblogs.com/sunzn/archive/2013/03/30/2990191.html 或 http://zhidao.baidu.com/link?url=67uy ...

  10. VW结合rem进行移动端布局

    ---恢复内容开始--- html { font-size:10vw: } div { width: 1rem; height: 1rem; } VW这个单位适合用来适应不同设备的 一个设备的宽度就为 ...