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) 这是一道裸的并查集题目(要不然叫模板呢) 废话不 ...
随机推荐
- ASP NET Core 部署 IIS 和发布
1. 微软官网原文链接: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore- ...
- win10 ubuntu16双系统安装教程
一. 知识准备 1.材料 前提: 本文档是在win10 64位下进行安装的!32位的安装注意其中的一些细节即可 硬件: X86_64 位电脑 硬盘有 40G 空闲 软件:[百度搜索即可] (1) Ul ...
- android ListView与EditText共存错位
在一个ListView中,如果里面有EditText会很麻烦,因为修改EditText里面的数据会发生错位现象. 这时候,需要在适配器BaseAdapter的getView中设置setTag(),将p ...
- [poj] 1389 Area of Simple Polygons
原题 线段树+扫描线 对于这样一个不规则图形,我们要求他的面积有两种方法,割和补. 补显然不行,因为补完你需要求补上去的内部分不规则图形面积-- 那么怎么割呢? 像这样: 我们就转化成了无数个矩形的和 ...
- 【转】去掉HTML5中number类型input字段的小箭头
第一种方案: 在chrome下: input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{ -webkit-appea ...
- Cisco IPC Emergency Responder Error
Upon startup of the newer Cisco IP Communicator clients (especially on Windows Vista/7), sometimes y ...
- 小Z爱划水(NOIP信(sang)心(bin)赛)From FallDream
题目: 小Z在机房.他和其它机房同学都面临一个艰难的抉择,那就是 要不要划水? 每个人都有自己的一个意见,有的人想做题,有的人想划水. 当然,每个人只能选择一个事情做.如果一个人做的事情和他想做的不同 ...
- 关于"implicit declaration of function 'gettimeofday' is invalid in c99"的解决
http://blog.csdn.net/macmini/article/details/10503799 当我们使用 gettimeofday(&time, NULL);时,会出现这样一个W ...
- 让vim的在输入模式下现实光标不同
前几天用过苹果之后,发现vim中在插入模式下与命令模式下光标形状不同,根据光标形状就可以快速确认所在的模式,很方便,后来查了很多资料,一直查到官方的wiki也没有搞定,后来,终于搞定,现记录如下:我的 ...
- 几种常见的YUV格式--yuv422:yuv420【转】
转自:http://blog.csdn.net/u012288815/article/details/51799477 关于yuv 格式 YUV 格式通常有两大类:打包(packed)格式和平面(pl ...