当前位置: 首页 > 编程日记 > 正文

[HNOI2015]落忆枫音

题目描述

不妨假设枫叶上有 n个穴位,穴位的编号为 1 ~  n。有若干条有向的脉络连接
着这些穴位。穴位和脉络组成一个有向无环图——称之为脉络图(例如图 1),穴
位的编号使得穴位 1 没有从其他穴位连向它的脉络,即穴位 1 只有连出去的脉络;
由上面的故事可知,这个有向无环图存在一个树形子图,它是以穴位 1为根的包含
全部n个穴位的一棵树——称之为脉络树(例如图 2和图 3给出的树都是图1给出
的脉络图的子图);值得注意的是,脉络图中的脉络树方案可能有多种可能性,例
如图2和图 3就是图 1给出的脉络图的两个脉络树方案。
脉络树的形式化定义为:以穴位 r 为根的脉络树由枫叶上全部 n个穴位以及 n
-  1 条脉络组成,脉络树里没有环,亦不存在从一个穴位连向自身的脉络,且对于
枫叶上的每个穴位 s,都存在一条唯一的包含于脉络树内的脉络路径,使得从穴位
r 出发沿着这条路径可以到达穴位 s。
现在向脉络图添加一条与已有脉络不同的脉络(注意:连接 2个穴位但方向不
同的脉络是不同的脉络,例如从穴位3到4的脉络与从4到3的脉络是不同的脉络,
因此,图 1 中不能添加从 3 到 4 的脉络,但可添加从 4 到 3 的脉络),这条新脉络
可以是从一个穴位连向自身的(例如,图 1 中可添加从 4 到 4 的脉络)。原脉络图
添加这条新脉络后得到的新脉络图可能会出现脉络构成的环。
请你求出添加了这一条脉络之后的新脉络图的以穴位 1 为根的脉络树方案数。
由于方案可能有太多太多,请输出方案数对 1,000,000,007 取模得到的结果。
题解
如果它是一个DAG,那么方案数就是除了根以外的所有点的入度之积。
那么如果有环,需要把所有环的方案数减掉。
如果我们枚举了一个环,那么这个环上所有点的选择方式已经确定,那么其他点的父亲可以随便选,方案数为Πd[i]/Πd[u],u为环上的点。
这个可以用记搜实现。
注意连向1的边没有意义,要判掉。
代码
#include<iostream>
#include<cstdio>
#define N 100002
using namespace std;
typedef long long ll;
const int mod=1e9+7;
int n,m,tot,head[N],xx,yy;
bool vis[N];
ll dp[N],ans=1,du[N];
struct edge{int n,to;
}e[N<<1];
inline int rd(){int x=0;char c=getchar();bool f=0;while(!isdigit(c)){if(c=='-')f=1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}return f?-x:x; 
}
inline ll power(ll x,ll y){ll ans=1;while(y){if(y&1)ans=ans*x%mod;x=x*x%mod;y>>=1;}return ans;
}
inline void add(int u,int v){e[++tot].n=head[u];e[tot].to=v;head[u]=tot;
}
void dfs(int u){if(vis[u])return;vis[u]=1;if(u==xx){dp[u]=ans*power(du[u],mod-2)%mod;return;}for(int i=head[u];i;i=e[i].n){int v=e[i].to;dfs(v);(dp[u]+=dp[v])%=mod;}dp[u]=dp[u]*power(du[u],mod-2)%mod;
}
int main(){n=rd();m=rd();xx=rd();yy=rd();int x,y;for(int i=1;i<=m;++i){x=rd();y=rd();add(x,y);du[y]++;}du[yy]++;ans=1;for(int i=1;i<=n;++i)if(du[i])ans=ans*du[i]%mod;if(yy!=1)dfs(yy); cout<<(ans-dp[yy]+mod)%mod;return 0;
}

转载于:https://www.cnblogs.com/ZH-comld/p/10464461.html

相关文章:

xp下安装sqlserver 2000的解决方案

1.在运行对话框输入&#xff1a;regedit&#xff08;注册表&#xff09; 2.把HKEY_LOCAL_MACHINE-----SYSTEM---------ControlSet001-------SessionManger--------PendingFileRenameOperations删除。转载于:https://www.cnblogs.com/deary/archive/2009/06/23/1509427.html

洛谷P2380 狗哥采矿

P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事&#xff0c;出来了这么一道题 题目描述 一个n*m的矩阵中&#xff0c;每个格子内有两种矿yeyenum和bloggium&#xff0c;并且知道它们在每个格子内的数量是多少。最北边有bloggium的收集站&#xff0c;最西边有 yeye…

详解DNS的常用记录(下):DNS系列之三

详解DNS常用记录&#xff08;下&#xff09;在上篇博文中我们介绍了DNS服务器中几种不可或缺的记录&#xff0c;包括A记录&#xff0c;NS记录和SOA记录。本篇博文中我们将继续为大家介绍DNS的另外几种常用记录&#xff0c;希望能对大家了解DNS有所帮助。四MX记录MX记录也被称为…

DP_knapsack

动态规划法解0-1背包问题 问题描述&#xff1a; 有n个背包&#xff0c;重量依次为w1,w2, ... ,wn, 价值依次是v1,v2, ... ,vn, 现在有一个大背包&#xff0c;其容量是capacity&#xff0c;往其中装小背包&#xff0c;要求得到的总价值最大&#xff0c;如何装&#xff1f; 用val…

三种求全排列方式之比较

一共有三种求全排列的方式&#xff1a; 第一种就是只适合用于非可重集的DFS实现 第二种就是可以用于可重集上的刘汝佳书上的代码 第三种就是STL中的next——permutation 在对这三种方式做了比较之后发现&#xff1a; DFS实现的效率最高&#xff0c;当n 10的时候耗时才不到2s&a…

Java连接数据库 JDBC

1、JDBC是什么&#xff1f; JDBC&#xff0c;英文全称&#xff1a;Java DataBase Connectivity&#xff0c;中文全称&#xff1a;java数据库连接&#xff0c;是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系数据库提供统一访问&#xff0c;由一组用Java语言编写的类…

西门子smart200以太网通讯协议

西门子smart200具体的通讯文档在网上或者官网我都没有找到&#xff08;哪位大仙有请给我留言发个感激不尽&#xff09;&#xff0c;本人是通过监听控制软件分析出其中的通讯协议。 连接是通过TCP/IP协议&#xff0c;我一般喜欢用Java写测试Socket。 通讯是依照字节流沟通&#…

祝我亲爱的天蝎GG生日快乐!+相识3周年小纪念

作者&#xff1a;快乐de蚂蚁2005年10月26日我们相识于清华一教于千万人之中相遇了彼此&#xff0c;你推着车走过来&#xff0c;我站在一教门口午后温暖的阳光斑斑驳驳的洒在你身上&#xff0c;唇红齿白&#xff0c;羞涩的笑容。。。第一次见面的此情此景永远定格在我的脑海。谁…

Aspose.Words导出图片 表格 Interop.Word

先定义一个WORD 模板&#xff0c; 然后替换文本、域 &#xff0c;定位开始表格 文本和段落 // Specify font formattingAspose.Words.Font font builder.Font;font.Size 16;font.Bold true; ;font.Color Color.Black;font.Name "Arial";font.UnderlineUnderline.…

[转帖]tar高级教程:增量备份、定时备份、网络备份

tar高级教程&#xff1a;增量备份、定时备份、网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论一、概述 备份与恢复对于系统维护而言是至关重要的事情。不合理的备份与还原会让你的数据面临丢失的风险。许多用户都在丢失重…

C# 异步读取数据库里面的数据与绑定UI的解决办法

异步读取数据库,在数据绑定的时候会出现点问题,就是窗体界面会无法关闭,要结束任务才能结束进程。例如下面代码 首先按习惯的方法&#xff0c;设定线程更新UI a2.CheckForIllegalCrossThreadCalls false; //a2为窗体名称 下面的代码就是从数据库里取得数据并绑定 private vo…

类、抽象类、接口之间的区别

目录 1、类与抽象类的异同之处 &#xff08;1&#xff09;类和抽象类的区别 &#xff08;2&#xff09;类和抽象类的相同之处 2、接口与类的异同之处 &#xff08;1&#xff09;接口与类相似点 &#xff08;2&#xff09;接口与类的区别 &#xff08;3&#xff09;接口…

(ASA) Cisco Web ××× 配置详解 [三部曲之一]

(ASA) Cisco Web 配置详解 [三部曲之一] 注意&#xff1a;本文仅对Web特性和配置作介绍&#xff0c;不包含SSL 配置&#xff0c;SSL 配置将在本版的后续文章中进行介绍。 首先&#xff0c;先来谈一谈ASA7.X系统中的默认隧道组和组策略。ASA/PIX 7.x系统默认在show run时不显示…

IDEA和Eclipse设置文件编码格式

1、IDEA设置已有文件的编码格式 在页面右下角可以看到文件的编码方式&#xff0c;如果编码方式的图标为灰色&#xff0c;则无法修改编码格式&#xff1b;如果其颜色不是灰色且其右侧有上下方向的三角形形状&#xff0c;点击它&#xff0c;可以修改编码方式。 注意&#xff1a;该…

关于运行ssm,web请求出现HTTP415错误

HTTP415错误&#xff1a;如果controller中用到了json传值&#xff0c;那么就必须加入 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <jackson.version>2.…

堆和栈浅析【转】

引用&#xff1a; 一、预备知识—程序的内存分配一个由c/C编译的程序占用的内存分为以下几个部分1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区&#xff…

JS-只能输入中文和英文

<span style"font-family:KaiTi_GB2312;">转自&#xff1a;<a target_blank href"http://www.cnblogs.com/liupeizhi/articles/2487472.html">http://www.cnblogs.com/liupeizhi/articles/2487472.html</a></span> </pre>&l…

SQL Server中读取XML文件的简单做法

SQL Server 2000使得以XML导出数据变得更加简单&#xff0c;但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦。本文介绍在SQL Server中读取XML文件的简单做法。SQL Server 2000使得以XML导出数据变得更加简单&#xff0c;但在SQL Server 2000中导入XML数据并对其进行…

Calling Oracle stored procedures from Microsoft.NET

摘自&#xff1a;http://www.c-sharpcorner.com/UploadFile/john_charles/CallingOraclestoredproceduresfromMicrosoftdotNET06222007142805PM/CallingOraclestoredproceduresfromMicrosoftdotNET.aspxIntroduction This article is intended to illustrate how to illustrate…

Https的底层原理

Http协议&#xff1a; 转载于:https://www.cnblogs.com/auldlangsynezh/p/10469587.html

【Linux笔记(002) 】-- centos7 文档操作基本命令

索引&#xff1a; 目录索引 一、cd -- ChangeDirectory a) 切换到 /DemoLM/ 文件夹 b) 回到用户 Home 根目录&#xff1a;是哪个账户登录的就会进入哪个用户的根目录 二、pwd -- PrintWorkingDirectory a) 查看当前工作目录 三、mkdir -- MakeDirectory a) 创建一个 /test/ 目录…

JDBC操作数据库实例

返回目录&#xff1a;《学生信息管理系统&#xff08;JavaJSP&#xff09;》 这里以JDBC操作MySQL数据库为例。 假设有一个名为test的数据库&#xff0c;里面有一张学生表&#xff0c;表名称为student&#xff0c;表结构如下&#xff1a; student表结构表中数据如下&#xff1…

面向JavaScript开发人员的Adobe AIR与Dreamweaver

入门教程&#xff0c;非常详细&#xff0c;CS4里面应该可以省略前面几步直接开发了。 Adobe AIR对于HTML/JavaScript应用程序与桌面的集成有着出色的支持&#xff0c;但除了所有附加功能之外&#xff0c;还需要一些其他工具和技术。这篇文章探讨了使用HTML/JavaScript的Web开发…

在数据显示页面增加按姓名查询功能

在上一章内容《将数据库中表格信息输出到页面上》的基础上&#xff0c;增加按姓名查询功能。 问&#xff1a;怎么在显示学生信息的页面增加按照姓名查询的功能&#xff1f; 答&#xff1a;在显示学生信息的页面&#xff0c;使用<form>标签为用户创建表单&#xff0c;表单…

Spring AOP的一些概念

切面&#xff08;Aspect&#xff09;&#xff1a; 一个关注点的模块化&#xff0c;这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。 在Spring AOP中&#xff0c;切面可以使用通用类&#xff08;基于模式的风格&#xff09; 或者在普通类中…

有关于Matlab的regionprops函数的PixelIdxList和PixelList的一点解释

上一篇文章&#xff08;点击这里&#xff09;的最后一点说到了regionprops的相关参数的意思&#xff0c;但是总感觉不够明确 现在重新对PixelIdxList和PixelList的内容经过实验之后得到了点启发 1.首先用excel建立了一个如下的表格&#xff0c;然后用mat保存为mat的方式进行加载…

windows 系统无法启动windows event log 服务

windows 系统无法启动windows event log 服务 关键词&#xff1a;无法启动系统事件日志 尝试解决步骤 【1】权限&#xff1a;把如图中logsfile文件等都给local service 【2】把C:\Windows\System32\winevt\Logs下面的文件全部移走到其他文件夹&#xff0c;再启动服务试试看 【…

移动互联网漫谈(3)

1.1WIFI WIFI是无线局域网的一种&#xff0c;全称Wireless Fidelity&#xff0c;又称802.11b标准&#xff0c;它的最大优点就是传输速度较高&#xff0c;可以达到11Mbps&#xff0c;另外它的有效距离也很长&#xff0c;同时也与已有的各种802.11 DSSS设备兼容。今夏最流行的笔…

实现对学生表的删除操作

在上一章内容《数据显示页面》的基础上&#xff0c;增加删除超链接&#xff0c;实现删除功能&#xff1b; 修改内容&#xff1a; 在数据显示页面的表格中&#xff0c;增加一列&#xff0c;列名为“删除”&#xff0c;用来显示删除超链接&#xff1b;为表格的行标签&#xff08…

FRAME与IFRAME

FRAME与IFRAME框架概念 &#xff1a; 所谓框架便是网页画面分成几个框窗&#xff0c;同时取得多个 URL。只需要转载于:https://www.cnblogs.com/vibratea/archive/2009/07/24/1530098.html