题目描述

如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数。物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量从物种ai流向物种bi,注意单独的一种孤立生物不算一条食物链

输入输出格式

输入格式:

第一行两个整数n和m,接下来m行每行两个整数ai bi描述m条能量流动关系。(数据保证输入数据符号生物学特点,且不会有重复的能量流动关系出现)1<=N<=100000 0<=m<=200000题目保证答案不会爆 int

输出格式:

一个整数即食物网中的食物链条数

输入输出样例

输入样例#1: 复制

10 16
1 2
1 4
1 10
2 3
2 5
4 3
4 5
4 8
6 5
7 6
7 9
8 5
9 8
10 6
10 7
10 9

输出样例#1: 复制

9

题解

心态崩了...这种水题都能写挂...

直接统计出度入度,记忆化搜索就可以了

有每条食物链的末端一定是没有出度有入度的,开头一定是有出度没有入度的

#include <bits/stdc++.h>#define ll long long
#define inf 0x3f3f3f3f
#define il inline #define in1(a) a=read()
#define in2(a,b) in1(a),in1(b)
#define in3(a,b,c) in2(a,b),in1(c)
#define in4(a,b,c,d) in2(a,b),in2(c,d)
#define out(a) printf( "%d" , a )
#define outn(a) out(a),putchar('\n')#define I_int int
inline I_int read() {I_int x = 0 , f = 1 ; char c = getchar() ;while( c < '0' || c > '9' ) {if( c == '-' ) f = -1 ;c = getchar() ;}while( c >= '0' && c <= '9' ) {x = (x << 1) + (x << 3) + c - 48 ;c = getchar() ;}return x * f ;
}
#undef I_intusing namespace std ;#define N 100010int n , m ;
int in[ N ] , out[ N ] ;
int head[ N ] , cnt ;
struct node {int to , nxt ;
} e[ N << 1 ] ;void ins( int u , int v ) {e[ ++ cnt ].to = v ;e[ cnt ].nxt = head[ u ] ;head[ u ] = cnt ;
}int f[ N ] ;int dfs( int x ) {if( f[ x ] ) return f[ x ] ;int ans = 0 ;if( !out[ x ] && in[ x ] ) ans ++ ;for( int i = head[ x ] ; i ; i = e[ i ].nxt ) {ans += dfs( e[ i ].to ) ;}f[ x ] = ans ;return ans ;
}int main() {in2( n , m ) ;for( int i = 1 , u , v ; i <= m ; i ++ ) {in2( u , v ) ; ins( u , v ) ;in[ v ] ++ ; out[ u ] ++ ;}int ans = 0 ;for( int i = 1 ; i <= n ; i ++ ) {if( !in[ i ] ) ans += dfs( i ) ;}outn( ans ) ;
}

转载于:https://www.cnblogs.com/henry-1202/p/9863581.html

LuoguP3183 [HAOI2016]食物链 记忆化搜索相关推荐

  1. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

  2. 图论 ---- F. Graph Traveler 记忆化搜索 + 思维预处理(数论同余恒等式)

    题目链接 题目大意: q∈[1,1e5],n∈[1,1000],mi∈[1,10]q\in[1,1e5],n\in[1,1000],m_i\in[1,10]q∈[1,1e5],n∈[1,1000],m ...

  3. 思维dp ---- Codeforces Round #711 (Div. 2) - C. Planar Reflections[dp/记忆化搜索]

    题目链接 题目大意: 就是给你n个平面和一个寿命为k的衰变粒子.开始粒子从左向右飞行,粒子每经过一个平面就会产生一个副本粒子,这个副本粒子比原粒子的寿命少1,即为k-1,并且飞行方向是原粒子的反方向. ...

  4. Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]

    题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...

  5. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://hydro.ac/d/bzoj/p/1589 Problem 每年万圣 ...

  6. UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)

    整理的算法模板合集: ACM模板 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形. 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b) ...

  7. [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)

    P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...

  8. hdu 4722(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. 1 #include<iost ...

  9. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...

最新文章

  1. SCRUM的三个工件
  2. jchdl - RTL实例 - And
  3. 2011年吉林大学计算机研究生机试真题
  4. 基于DDD的.NET开发框架 - ABP工作单元(Unit of Work)
  5. 1.1内置数据类型概述
  6. OscillatorNode
  7. Python中对字符串进行Url加解密操作
  8. 20181213-python1119作业郭恩赐
  9. 肌电数据归一化并显示灰度图片
  10. DCDC中自举电容的原理小结(一)
  11. 安卓开发——显示网速
  12. c/c++原子锁应用(跨平台)
  13. Ant Design Vue 如何分页(后台传入)
  14. 【虚幻引擎UE】UE4/UE5 GIS辅助类插件推荐及使用介绍
  15. java派单策略_滴滴KDD2018:强化学习派单
  16. Thinkphp5威客任务平台网站源码
  17. 帧结构和物理资源(RB,PRB,VRB,REG,RBG)
  18. 读《环境光遮蔽技术在图形图像中若干关键技术的研究》总结-其一
  19. 展厅智能中央控制服务器,展厅智能照明管理系统-智能中央控制系统
  20. 世界500强企业优秀员工的十二条核心标准

热门文章

  1. iframe内容 固定比例_允知研习|浅析固定总价合同的结算问题
  2. boot项目中pom依赖已经删除了但是maven上还是报红线_Java Web项目是怎么跑起来的?...
  3. android测试 课程设计,超星尔雅Android开发课程设计章节测试答案
  4. 替代方法_ASD干预:替代行为的正确使用方法和注意事项
  5. golang key map 所有_Golang面试知识点总结
  6. 单点登录系统(SSO)和Session共享解释
  7. 科学计算机撤销,云计算环境下基于属性的撤销方案-计算机科学.PDF
  8. $dbms=mysql_MySQL学习笔记(一)
  9. php 数组接在数组后面,PHP array_splice()接合数组用法的简单介绍
  10. crontab用法 时间配置_Linux指定的时间运行自定义命令的两种方式