LibreOJ 2060 食物链
题目
现在给你 nn 个物种和 mm 条能量流动关系,求其中的食物链条数。
物种的名称为从 11 到 nn 的编号。
mm 条能量流动关系形如
a_1a1 b_1b1
a_2a2 b_2b2
a_3a3 b_3b3
… …
a_mam b_mbm
其中 a_i \ b_iai bi 表示能量从物种 a_iai 流向物种 b_ibi。注意单独的一种孤立生物不算一条食物链。
输入
第一行两个整数 nn 和 mm,接下来 mm 行每行两个整数 a_i \ b_iai bi 描述 mm 条能量流动关系。
(保证输入数据符合生物学特点,且不会有重复的能量流动关系出现)
[tips:应该是指没有环,也没有重边]
输出
一个整数,即食物网中的食物链条数。
思路
到达每个消费者的食物链数量等于到达它的食物的食物链的数量的和,因此可以用动态规划,从生产者开始,一直递推到顶级消费者,再取和。
#include<stdio.h>
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;int n, m;
int in[100005];
int out[100005];
vector<vector<int>> graph = vector<vector<int>>(100005, vector<int>());
int dp[100005];int search(int num)
{int ans = 0;if(dp[num] != -1) ans = dp[num];else if(out[num] == 0) ans = 1; //出度为0,顶级消费者else{for(int i = 0; i < out[num]; i++) ans += search(graph[num][i]); } dp[num] = ans;return ans;
}int main()
{scanf("%d %d", &n, &m);memset(in, 0, sizeof(in));memset(out, 0, sizeof(out));memset(dp, -1, sizeof(dp));int a, b;while(m--){scanf("%d %d", &a, &b);graph[a].push_back(b);out[a]++, in[b]++; } int sum = 0;for(int i = 1; i <= n; i++){if(in[i] == 0 && out[i] != 0) sum += search(i);}printf("%d", sum); return 0;
}
LibreOJ 2060 食物链相关推荐
- 【洛谷P2024】食物链
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...
- ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!
两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...
- [kuangbin带你飞]专题五 并查集 E - 食物链 (带权并查集)
E - 食物链 题目链接:https://vjudge.net/contest/66964#problem/E 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C ...
- [bzoj4562][Haoi2016]食物链_记忆化搜索_动态规划
食物链 bzoj-4562 Haoi-2016 题目大意:给你n个点,m条边的DAG,求所有的满足条件的链,使得每条链的起点是一个入度为0的点,中点是一条出度为0的点. 注释:$1\le n\le 1 ...
- 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )
昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...
- C - 食物链 POJ - 1182
C - 食物链 POJ - 1182 大佬,%%% 加入给你一个 1, 那 1 应该放进 A.B.还是C呢,不知道了,所以开三倍的空间, 1~n 表示 A, n+1~2n 表示 B, 2n+1 ~ 3 ...
- POJ-1182 食物链(并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 75814 Accepted: 22528 Description ...
- 食物链 poj 1182
C - 食物链 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- LuoguP3183 [HAOI2016]食物链 记忆化搜索
题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...
最新文章
- 你管这破玩意叫 RDB
- 5_python将多张图片显示在一张图片上(20181218)
- UML中类之间的几种关系
- 2020年, VQA论文汇总
- 实现option上下移动_Perona-Malik方程(各向同性非线性扩散实现图像滤波)
- extjs6 引入ux_关于UX以及如何摆脱UX的6种常见误解
- 潘淳的苏州.NET俱乐部成立有感!附我的录音
- db服务器作用,数据库服务器
- 配置管理 ACM 在高可用服务 AHAS 流控降级组件中的应用场景
- 数据结构笔记(十五)-- 数组原理
- SharePoint 2010遍历文档库中所有的文件,文件夹
- Netty中有哪些自带的ChannelHandler?
- 深度学习笔记_基本概念_梯度下降及示例代码
- Atitit webclient httpclient技术总结 RestTemplate Atitit CateIT重要技术httpclient iduah2 impt 体系树路径:CS
- Raki的读paper小记:Enhanced Language Representation with Label Knowledge for Span Extraction
- 怎样使用WP Review Pro插件?
- linux安装酷q机器人,【折腾】在Docker中运行酷Q机器人
- smb协议讲解_SMB协议详解 - 人之为学,如饮河海,大饮则大盈,小饮则小盈 - OSCHINA - 中文开源技术交流社区...
- 计算机是否能安装64位操作系统,电脑装32位还是64位系统
- python return break_Python基础:return和break的不同