博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3183 [HAOI2016]食物链
阅读量:4537 次
发布时间:2019-06-08

本文共 1505 字,大约阅读时间需要 5 分钟。

P3183 [HAOI2016]食物链

题目描述

如图所示为某生态系统的食物网示意图,据图回答第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 161 21 41 102 32 54 34 54 86 57 67 98 59 810 610 710 9
输出样例#1:
9 入度为零的是生产者,作为开头,出度为零的是终极消费者,作为结尾,求从入度为零的走到出度为零的路径总数。
1 #include
2 #include
3 4 const int MAXN = 100100; 5 struct Edge{ 6 int to,nxt; 7 }e[MAXN<<1]; 8 int head[MAXN]; 9 int f[MAXN];10 int ru[MAXN],ch[MAXN];11 int n,m,ans,cnt;12 13 void add(int u,int v)14 {15 ++cnt;16 e[cnt].to = v;17 e[cnt].nxt = head[u];18 head[u] = cnt;19 }20 int search(int a)21 {22 if (f[a]) return f[a]; //记忆化搜索 23 if (ch[a]==0) return 1; //走到尽头(出度为零的点),返回1 24 int sum = 0;25 for (int i=head[a]; i; i=e[i].nxt) //找所有连着的边 26 {27 sum += search(e[i].to);28 }29 f[a] = sum; //记忆化搜索 30 return sum;31 }32 int main()33 {34 scanf("%d%d",&n,&m);35 for (int u,v,w,i=1; i<=m; ++i)36 {37 scanf("%d%d",&u,&v);38 add(u,v);39 ru[v]++;40 ch[u]++;41 }42 for (int i=1; i<=n; ++i) //找入度为零的点(出度也要有) 43 if (ru[i]==0 && ch[i]!=0) ans += search(i);44 printf("%d",ans);45 return 0;46 }

转载于:https://www.cnblogs.com/mjtcn/p/7074268.html

你可能感兴趣的文章
python装饰器的作用
查看>>
[bzoj2510]弱题 (循环矩阵优化dp)
查看>>
Django Form 的主要内置字段介绍
查看>>
如何写好一个UITableView
查看>>
XML文件生成C++代码(基于rapidxml)
查看>>
写代码,更需要设计代码
查看>>
iOS:修改项目名
查看>>
SpringCloud-Eureka
查看>>
double在输出为字符串的几种方法效率测试
查看>>
ArcGIS API for JavaScript 4.2学习笔记[14] 弹窗的位置、为弹窗添加元素
查看>>
电路基础
查看>>
jquery 对象与DOM对象转换
查看>>
DELPHI 调用系统 ADO 配置窗体 提高软件易用性
查看>>
Mongodb 命令及 PyMongo 库的使用
查看>>
div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法(非原创)
查看>>
关于SDWebImage加载高清图片导致app崩溃的问题
查看>>
如何查看方法在哪里被调用
查看>>
HUE的自动化安装部署
查看>>
图片服务器(FastDFS)的搭建
查看>>
myBatis应用
查看>>