【luogu P4017 最大食物链计数】 题解
题目链接:https://www.luogu.org/problemnew/show/P4017
DAG + DP
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 500010;
const int mod = 80112002;
struct edge{
long long from, to, next;
}e[maxn<<2];
long long head[maxn], cnt;
long long n, m, indrg[maxn], outdrg[maxn], f[maxn], str[maxn], strnum, end[maxn], endnum, ans;
long long H, T, Q[maxn];
void add(long long u, long long v)
{
e[++cnt].from = u;
e[cnt].next = head[u];
e[cnt].to = v;
head[u] = cnt;
}
int main()
{
memset(head, -1, sizeof(head));
scanf("%lld%lld",&n,&m);
for(long long i = 1; i <= m; i++)
{
long long u, v;
scanf("%lld%lld",&u,&v);
add(u, v);
indrg[v]++; outdrg[u]++;
}
T = 0, H = 1;
for(long long i = 1; i <= n; i++)
{
if(indrg[i] == 0)
Q[++T] = i, str[++strnum] = i;
if(outdrg[i] == 0)
end[++endnum] = i;
}
while(H <= T)
{
long long u = Q[H++];
for(long long i = head[u]; i != -1; i = e[i].next)
{
long long v = e[i].to;
indrg[v]--;
if(indrg[v] == 0)
Q[++T] = v;
}
}
for(int i = 1; i <= strnum; i++)
f[str[i]] = 1;
for(long long i = 1; i <= n; i++)
{
long long u = Q[i];
for(long long j = head[u]; j != -1; j = e[j].next)
{
long long v = e[j].to;
f[v] += f[u] % mod;
}
}
for(int i = 1; i <= endnum; i++)
ans += f[end[i]] % mod;
printf("%lld",ans % mod);
return 0;
}
【luogu P4017 最大食物链计数】 题解的更多相关文章
- 洛谷 P4017 最大食物链计数 题解
P4017 最大食物链计数 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧 ...
- 洛谷 P4017 最大食物链计数
洛谷 P4017 最大食物链计数 洛谷传送门 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写 ...
- 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序
洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...
- 洛谷——P4017 最大食物链计数
P4017 最大食物链计数 题目背景 你知道食物链吗?Delia生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧 ...
- 洛谷 P4017 最大食物链计数 (拓扑排序,思维)
题意:有\(n\)个点,连\(m\)条边,求最多有多少条食物链(从头走到为有多少条路径). 题解:之前抽了点时间把拓扑排序补完了,这题其实就是一道拓扑排序的裸题.关于拓扑排序: 1.首先,我们用\ ...
- P4017 最大食物链计数(洛谷)
老师开始帮我们查漏补缺啦!我们的老师这两天给了我们一些我们没怎么学的函数和算法,比如STL的函数和拓扑排序之类的,这个题就是讲拓扑排序的. 先看题板: 题目背景 你知道食物链吗?Delia 生物考试的 ...
- 洛谷P4017 最大食物链计数
拓扑排序板子题 #include <iostream> #include <cstdio> #include <cstring> #include <queu ...
- P4017 最大食物链计数 (拓扑排序)
看到拓扑排序感觉非常遥远的复杂,不喜欢图.看了拓扑排序的原理,很像广搜. 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 ...
- luogu P1126 机器人搬重物 题解
luogu P1126 机器人搬重物 题解 题目描述 机器人移动学会(\(RMI\))现在正尝试用机器人搬运物品.机器人的形状是一个直径\(1.6\)米的球.在试验阶段,机器人被用于在一个储藏室中搬运 ...
随机推荐
- [javaEE] 数据库连接池和动态代理
实现javax.sql.DataSource接口 实现Connection getConnection()方法 定义一个静态的成员属性LinkedList类型作为连接池,在静态代码块中初始化5条数据库 ...
- java--集合框架总结1--set总结
一.集合框架的概述. 基础的数据结构有数组,链表,栈,队列,二叉树等,java中的数据结构,利用了这些基本的数据结构分别实现了很丰富的集合框架类型,下面简单地总结下关于java集合框架的基础内容,在进 ...
- 设计模式入门,工厂模式,c++代码实现
// test04.cpp : Defines the entry point for the console application.////设计模式第4章 工厂模式#include "s ...
- C Primer Plus note3
上面的源代码为什么输入q的时候,程序就会退出呢? while(条件语句),status == 1是条件语句,status只要是非0值的时候,status == 1的条件就满足,程序就会运行while循 ...
- 详细解析 HTTP 与 HTTPS 的区别
详细解析 HTTP 与 HTTPS 的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览 ...
- c#开源项目收集
1百度云高速下载c#开源: https://github.com/ResourceHunter/BaiduPanDownloadWinform 2.IdaCsharp http://idacsharp ...
- JDBC连接数据库方法的封装,以及查询数据方法的封装
(在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...
- Windows IO 性能简单测试
转自:http://bbs.csdn.net/topics/360111289, 有改动. #include <windows.h> #include <stdio.h> #i ...
- android webview 播放 video经验总结
在目前PC浏览器上,对video的支持基本都没什么问题了.但是如果用webview去跑这样的页面就会遇到许多问题. 下面一段html <!DOCTYPE html> <html> ...
- vs2015使用技巧-------- 查看类关系图
1.在项目上点击右键,点击“查看”------->“查看类图”: 2.生成的类图如下: