luogu 2509. 森林大礼包
2509. 森林大礼包
★ 输入文件:three_squirrels.in 输出文件:three_squirrels.out 简单对比
时间限制:1 s 内存限制:256 MB
【题目描述】
有一天紫萱学姐心情不好,学长就买了一个自己最喜欢吃的森林大礼包送给学姐,因为反正最后都是自己吃。
森林大礼包里一共可能有n种包装袋,编号为0~n-1,0号包装袋里有一颗坚果,所有1~n-1号包装袋里都装着若干包其他包装袋,但是不会出现一个包装袋的某个子包装袋里包含这这个包装袋本身的灵异现象。
最终森林大礼包里也会装着若干个包装袋,为了方便表示,我们将森林大礼包视为n号包装袋。请你帮助紫萱学姐计算这个大礼包里一共有多少颗坚果,由于答案可能很大,输出这个数对10^9+7取余的结果。
【输入格式】
输入数据第一行为一个整数n,意义如题目所示。
接下来n行,第i行一个整数ki,代表i号包装袋中含有ki个其他包装袋,接下来ki个整数aij代表这ki个包装袋的编号。
【输出格式】
一个整数,意义如题目所示。
【样例输入】
7
1 0
2 0 1
2 1 2
2 2 3
2 3 4
2 4 5
2 5 6
【样例输出】
21
【提示】
样例中7个包装袋中的坚果数组成了一个斐波那契数列。
对于40%的数据,n≤10。
对于70%的数据,aij<i。
对于100%的数据,n≤100000,0<ki≤10,0≤aij<n且≠i,对于1≤x<y≤ki,aix可能与aiy相等,即一个包装袋内可能装有多个相同编号的包装袋。
【来源】
mzx
这题用邻接表被卡了(555)
返乡topsort 从里向外拓扑,也就是该层为内层之和
#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
const int MAXN=1e5+;
const int MOD=1e9+;
vector<int> G[MAXN];
long long f[MAXN];
int in[MAXN];
queue<int> que;
int n,m; void topu(int u) {
que.push(u);
while(!que.empty()) {
int q=que.front();
que.pop();
for(int i=; i<G[q].size(); i++) {
int p=G[q][i];
in[p]--;
f[p]+=f[q];
f[p]%=MOD;
if(in[p])continue;
que.push(p);
}
}
} int main() {
freopen("three_squirrels.in","r",stdin);
freopen("three_squirrels.out","w",stdout);
scanf("%d",&n);
for(int i=; i<=n; i++) {
int num;
scanf("%d",&num);
for(int j=; j<=num; j++) {
int a;
scanf("%d",&a);
G[a].push_back(i);
in[i]++;
}
}
f[]=;
topu();
printf("%lld",f[n]%MOD);
return ;
}
luogu 2509. 森林大礼包的更多相关文章
- Luogu 3302 [SDOI2013]森林
BZOJ 3123 丑陋的常数,BZOJ 19968ms 卡过. 感觉几个思想都挺经典但是挺套路的. 先考虑不连边的情况怎么做,区间第$k$小,想到主席树,每一个结点维护它到根的前缀和,这样子每一次查 ...
- 【Luogu】P1967货车运输(最大生成森林+倍增LCA)
题目链接 倍增LCA是个什么蛇皮原理啊,循环完了还得再往上跳一次才能到最近公共祖先 合着我昨天WA两次就是因为这个 建最大生成森林,因为图不一定是联通的,所以不一定是一棵树.这个地方用克鲁斯卡尔就好了 ...
- [Luogu P2387] [NOI2014]魔法森林 (LCT维护边权)
题面 传送门:https://www.luogu.org/problemnew/show/P2387 Solution 这题的思想挺好的. 对于这种最大值最小类的问题,很自然的可以想到二分答案.很不幸 ...
- luogu P2387 [NOI2014]魔法森林
传送门 这题似乎不好直接做,可以考虑按照\(a_i\)升序排序,然后依次加边更新答案 具体实现方法是用lct维护当前的树,这里需要维护链上最大的\(b_i\).每次加一条边,如果加完以后没有环直接加, ...
- [luogu P2391] 白雪皑皑
[luogu P2391] 白雪皑皑 题目背景 “柴门闻犬吠,风雪夜归人”,冬天,不期而至.千里冰封,万里雪飘.空中刮起了鸭毛大雪.雪花纷纷,降落人间. 美能量星球(pty 在 spore 上的一个殖 ...
- 【luogu P2195 HXY造公园】 题解
题目链接:https://www.luogu.org/problemnew/show/P2195 fir.吐槽题目(省略1w字 sec.考虑对一个森林的维护,每棵树用并查集维护. 操作1:输出当前查询 ...
- BZOJ4573:[ZJOI2016]大森林——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4573 https://www.luogu.org/problemnew/show/P3348#sub ...
- BZOJ3669:[NOI2014]魔法森林——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3669 https://www.luogu.org/problemnew/show/P2387 为了得 ...
- Luogu [P3367] 模板 并查集
[模板]并查集 题目详见:[[P3367][模板]并查集] (https://www.luogu.org/problemnew/show/P3367) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...
随机推荐
- 百度webuploader上传 1
百度webupload网址:http://fex.baidu.com/webuploader/ 引入js和css <script src="../../Content/webuploa ...
- [译]12-spring依赖注入
每个java应用程序都是由多个类协作才最终生成了终端用户所使用的系统.当编写复杂java应用程序的时,类之间应尽 可能保持独立,因为这样更容易做到代码的重用,也有利于单元测试的开展.spring的依赖 ...
- Oracle 学习----:Oracle删除表时报错:表或视图不存在
表明明存在,但是删除时却报错:表或视图不存在. 可能的原因之一是表名包含了小写,可以用双引号包含表名通过drop命令来删除, 如下所示: drop table "tmp_ST" ; ...
- CentOS6.5下搭建LAMP环境(源码编译方式)
CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL) 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP ,WAMP,MAMP等.这里我介 ...
- UVa 11806 - Cheerleaders (组合计数+容斥原理)
<训练指南>p.108 #include <cstdio> #include <cstring> #include <cstdlib> using na ...
- hadoop-hdfs(三)
HDFS概念 1 数据块* HDFS的一个数据块默认是64M,与元数据分开管理. 优点: 数据块的大小设计的较大,所以寻址占传输的时间比例较小,只需要计算传输速度即可. 便于简化管理,利于计算剩余空间 ...
- 防御暴力破解SSH攻击
托管在IDC的机器我们通常都用SSH方式来远程管理.但是经常可以发现log-watch的日志中有大量试探登录的 信息,为了我们的主机安全,有必要想个方法来阻挡这些可恨的"HACKER&quo ...
- Web 安全概念
Web 安全概念 Web 应用中存在很多安全风险,这些风险会被黑客利用,轻则篡改网页内容,重则窃取网站内部数据,更为严重的则是在网页中植入恶意代码,使得用户受到侵害.常见的安全漏洞如下: XSS 攻击 ...
- 看了就学会之React redux入门示例
环境准备 为了方便,这里使用create-react-app搭建react环境 create-react-app mydemo 弹出配置 如果需要自定义react的配置,需要运行下面的命令把配置文件弹 ...
- javascript的Date操作(月初,月末)
var cur = new Date(), unitDay = 24 * 60 * 60 * 1000; //月初 var sFirstDay = cur.getFullYear() + '/' + ...