题目背景

你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。

题目描述

给你一个食物网,你要求出这个食物网中最大食物链的数量。

(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)

Delia 非常急,所以你只有 111 秒的时间。

由于这个结果可能过大,你只需要输出总数模上 801120028011200280112002 的结果。

输入格式

第一行,两个正整数 n、mn、mn、m,表示生物种类 nnn 和吃与被吃的关系数 mmm。

接下来 mmm 行,每行两个正整数,表示被吃的生物A和吃A的生物B。

输出格式

一行一个整数,为最大食物链数量模上 801120028011200280112002 的结果。

样例 #1

样例输入 #1

5 7
1 2
1 3
2 3
3 5
2 5
4 5
3 4

样例输出 #1

5

提示

各测试点满足以下约定:

【补充说明】

数据中不会出现环,满足生物学的要求。(感谢 @AKEE )
代码:

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N = 1e6 + 10;
int e[N], ne[N], h[N], idx = 0;
int din[N],dout[N];
int f[N];
const int mod = 80112002;
void add(int a, int b)
{e[idx] = b;ne[idx] = h[a];h[a] = idx++;
}
int n, m;
bool st[N];
int seq[N];
void top()
{queue<int>q;int cnt = 0;for (int i = 1; i <= n; i++){if (din[i] == 0){f[i] = 1;q.push(i);}if (dout[i] == 0){seq[cnt++] = i;}}while (!q.empty()){int t = q.front();q.pop();if (st[t]){continue;}st[t] = true;for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];f[j] = (f[t] + f[j]) % mod;din[j]--;if (din[j] == 0){q.push(j);}}}int res = 0;for (int i = 0; i < cnt; i++){res += f[seq[i]];res %= mod;}cout << res << endl;
}
int main()
{memset(h, -1, sizeof h);cin >> n >> m;for (int i = 0; i < m; i++){int a, b;cin >> a >> b;add(a, b);din[b]++;dout[a]++;}top();
}

P4017 最大食物链计数相关推荐

  1. 图解Topo拓扑排序 例题洛谷P4017 最大食物链计数

    适用条件:无环图 输出结果:使得每个节点,以它为终点的起点节点排都在其前面 作用:递推保证前面的节点都已经被使用过 实现方法:从没有入边的节点开始,输出并从其他节点中删去自己,重复此步骤直到所有节点都 ...

  2. 洛谷 P4017 最大食物链计数

    题目背景 你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条.于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧. 题目描述 给你一个食物 ...

  3. 解题记录 P4017 最大食物链计数 拓扑排序

    题意: 给你一个食物链 DAG, 求最多有多少条食物链, 对结果取余 8011200280112002 思路: 想要找到一条 最大食物链 ,那么这条路径的 起点 入度要为0,终点 出度要为0. 故:既 ...

  4. 洛谷 最大食物链计数 python题解

    题目:P4017 最大食物链计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给你一个食物网,你要求出这个食物网中最大食物链的数量. (这里的"最大食物链&q ...

  5. 拓扑排序(最大食物链计数、图文结合)

    拓扑排序 拓扑排序(topological-sort)是指由某个集合上的一个偏序得到该集合上的一个全序的操作.拓扑排序常用来确定一个依赖关系集中,事物发生的顺序. 拓扑排序是对有向无环图的顶点的一种排 ...

  6. 拓扑排序三题(菜肴制作杂物最大食物链计数)

    目录 一.[HNOI]2015菜肴制作 二.洛谷1113杂物 代码一: 代码二: 三.最大食物链计数[洛谷4017] DAG:有向无环图 图的建立很重要 一.[HNOI]2015菜肴制作 传送门1 思 ...

  7. 拓扑排序——最大食物链计数(洛谷 P4017)

    题目选自洛谷P4017 这里具体讲一下为什么要用拓扑排序(思维过程): 1.这是一道图论题: 2.不是求最短路: 3.根据提示"最左端是不会捕食其他生物的生产者"可以想到,我们要入 ...

  8. ACM入门之【图论习题】

    目录 P5318 [深基18.例3]查找文献[★ 图的遍历] P3916 图的遍历[★★ 求每一个点可以到达的最大的点 反向建图] P1113 杂务[★ ★ 拓扑排序 求完成所有杂务所需的最短时间] ...

  9. 【动态规划1】动态规划的引入(今天刷洛谷了嘛)

    注: P4017 最大食物链计数 因为现在还不会拓扑排序,所以暂且放到以后去解决! P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles #include&l ...

最新文章

  1. 场面话大全,绝对受用一生
  2. 肝!用 Python 加密文件
  3. 使用变量_在 Linux 中使用变量 | Linux 中国
  4. 深度学习之Batch Normalization
  5. K8s中Pod健康检查源代码分析
  6. Atitit java字符串模板渲染总结 目录 1. 总结:指标 1 1.1. 支持中文变量 提升可读性 1 1.2. 变量placeholder简单性,,velo可以直接¥前导简单。。Free的
  7. 苹果为什么不能开无线网络连接服务器,苹果手机不能上网怎么办 iPhone网络故障解决【详解】...
  8. huggingface datasets load_metric connecterror cannot reach
  9. Power Pivot数据建模与数据汇总分析
  10. 为什么会出现锟斤拷?
  11. 将你的Android平板电脑变为笔记本电脑方法
  12. 怎么看自己电脑的是几位的操作系统的
  13. 7-3 计算平均成绩(15 分)(转载)
  14. (Math)矩阵求导
  15. vue h5 腾讯地图路线规划
  16. 北京汽车加速海外业务发展
  17. MYSQL 备份到底怎么办,XTRABACKUP 还是 MEB(2)--mysqlbackup MEB
  18. Java的发展前景与就业趋势如何?
  19. pythonxpath语法_xpath语法
  20. Android studio 中搜狗输入法 中文提示不跟随光标

热门文章

  1. 网站出现DNS域名解析错误怎么办?
  2. 关闭localized intellij idea切换语言提醒
  3. Java与JS金额计算去掉小数部分的方法
  4. 非常有用的10个谈话技巧
  5. 如何成为一个区块链开发人员_成为开发人员是社会工作
  6. OpenCV-Python教程#5-颜色和颜色检测
  7. Windows下DOS窗口修改编码
  8. 15、JVM监控及诊断工具-GUI篇
  9. Scala study
  10. 云开发mbti人格类型测试助手微信小程序源码