BZOJ4562: [Haoi2016]食物链

Description

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

 

Input

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

 

Output

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

 

Sample Input

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

Sample Output

9
出生物题是什么心态???
一条食物链就是从0入度节点到0出度节点的一条路径,而这又是一个DAG,所以拓扑排序后随便DP一下就好了。
#include<cstdio>
#include<cctype>
#include<queue>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define ren for(int i=first[x];i;i=next[i])
using namespace std;
const int BufferSize=1<<16;
char buffer[BufferSize],*head,*tail;
inline char Getchar() {if(head==tail) {int l=fread(buffer,1,BufferSize,stdin);tail=(head=buffer)+l;}return *head++;
}
inline int read() {int x=0,f=1;char c=Getchar();for(;!isdigit(c);c=Getchar()) if(c=='-') f=-1;for(;isdigit(c);c=Getchar()) x=x*10+c-'0';return x*f;
}
const int maxn=100010;
const int maxm=200010;
typedef long long ll;
int n,m,first[maxn],deg[maxn],in[maxn],is[maxn],next[maxm],to[maxm],e;
void AddEdge(int u,int v) {in[v]++;deg[v]++;is[u]=1;to[++e]=v;next[e]=first[u];first[u]=e;
}
int Q[maxn],f[maxn],g[maxn];
int main() {n=read();m=read();rep(i,1,m) AddEdge(read(),read());int l=1,r=0;rep(i,1,n) if(!in[i]) Q[++r]=i,f[i]=1;while(l<=r) {int x=Q[l++];ren {f[to[i]]+=f[x];if(!(--in[to[i]])) Q[++r]=to[i];}}int ans=0;rep(i,1,n) if(!is[i]&&deg[i]) ans+=f[i];printf("%d\n",ans);return 0;
}

  

转载于:https://www.cnblogs.com/wzj-is-a-juruo/p/5552671.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JLupin Next Server乍一看

JEE基础结构现在有了一个新的管理解决方案– JLupin Next Server。 它为应用程序实现提供了另一种方法。 它提供什么&#xff1f; 用于实现JEE应用程序的现有解决方案受到限制。 通过新的应用程序管理方式&#xff0c;JLupin Next Server打破了所有障碍。 JEE的足迹 良好实践…

《02》let 和 const 命令

目录 1.let命令 基本用法 暂时性死区 不允许重复声明 2.块级作用域 3.const 命令 基本用法 本质 1.let命令 基本用法 ES6 新增了let命令&#xff0c;用来声明变量。它的用法类似于var&#xff0c;但是所声明的变量&#xff0c;只在let命令所在的代码块内有效。 <…

在线支付模块小结

一、概述 在所有的电子商务网站中都提供了在线支付功能&#xff0c;用户可以将在网上选购的商品生成订单后通过网站提供的在线支付功能进行结算。网站开发者可以直接使用银行提供的接口实现在线支付&#xff0c;也可以使用第三方支付平台来实现。使用银行接口需要自行开发程序&…

《03》JavaScript编码风格

探讨如何将 ES6 的新语法&#xff0c;运用到编码实践之中&#xff0c;与传统的 JavaScript 语法结合在一起&#xff0c;写出合理的、易于阅读和维护的JavaScript 风格规范代码。 目录 1.块级作用域 &#xff08;1&#xff09;let 取代 var &#xff08;2&#xff09;全局常量…

js 闭包作用域和作用域链_Java:伪造工厂的闭包以创建域对象

js 闭包作用域和作用域链最近&#xff0c;我们想创建一个域对象&#xff0c;该对象需要具有外部依赖关系才能进行计算&#xff0c;并且希望能够在测试中解决该依赖关系。 最初&#xff0c;我们只是在领域类中引入依赖关系&#xff0c;但这使得无法在测试中控制其值。 同样&…

读《第一次把事情做对》有感

上班的时候&#xff0c;领导在群里发了一个PDF书籍《第一次把事情做对》&#xff0c;被这个书籍名称吸引住了&#xff0c;因为作为程序员每天有开发新任务&#xff0c;解决旧任务的BUG&#xff0c;第一次就把事情做的完全正确几乎不可能呀&#xff0c;觉得很有看的必要&#xf…

Centos配置国内yum源

网易&#xff08;163&#xff09;yum源是国内最好的yum源之一 &#xff0c;无论是速度还是软件版本&#xff0c;都非常的不错&#xff0c;将yum源设置为163yum&#xff0c;可以提升软件包安装和更新的速度&#xff0c;同时避免一些常见软件版本无法找到。具体设置方法如下&…

做了三年前端,你才知道10分钟就能实现一个PC版魔方游戏

导读&#xff1a;最近手头有点紧&#xff0c;看到很多小朋友都在玩魔方&#xff0c;又没有money买&#xff0c;只能自己用JavaScriptcss实现一个&#xff0c;在电脑端就能开启魔方之旅。 目录 项目启动演示 项目目录 ​源码地址 项目启动演示 前端使用JavaScript和纯CSS实现…

UVA 2474 - Balloons in a Box 爆搜

2474 - Balloons in a Box题目连接&#xff1a; https://icpcarchive.ecs.baylor.edu/index.php?optioncom_onlinejudge&Itemid99999999&pageshow_problem&category36&problem475&mosmsgSubmissionreceivedwithID1967446 Description You must write a pr…

15K的前端应届毕业生,就因为掌握了这些知识点!(前端企业级开发必备)

目录 1.前端开发 下载安装VScode 优化配置 2、插件安装 3、设置字体大小 4、开启完整的Emmet语法支持 5、视图 2.Node.js 入门 2.1、什么是Node.js 2.2、Node.js有什么用 2.3、安装 下载&#xff1a; 2.4、快速入门 2.5、服务器端应用开发 3、ES6入门 3.2、let声…

[Training Video - 1] [Selenium Basics] [Download and Install Selenium]

Download Selenium Jars Configure jars in eclipse Webdriver http://docs.seleniumhq.org/download/ Selenium RC http://code.google.com/p/selenium/downloads/detail?nameselenium-remote-control-1.0.3.zip&can2&q转载于:https://www.cnblogs.com/MasterMonkInT…

【0元试用微软 Azure人工智能认知服务】这个人脸识别功能太强大啦

导读&#xff1a;这个由美丽的客服小姐姐提前申请好了企业试用的账号&#xff0c;个人的话还得需要visa卡。 官网地址&#xff1a;azure.cn 登录地址&#xff1a;portal.azure.cn 目录 1.简介 2.Azure 认知服务是什么&#xff1f; ​ 3.认知服务的四种职能 4.人脸API 5.新建一…

OpenMap教程3 –使用MapHandler构建基本的地图应用程序–第2部分

1.简介 在上一教程中&#xff0c;我们看到了MapHandler如何将各种组件连接在一起&#xff08;更具体地说&#xff0c;是从MapHandlerChild派生的类&#xff09;。 我们看到了如何以编程方式执行此操作&#xff0c;但是还有另一种声明性地使用openmap.properties 。 样本OpenMa…

《javaScript100例|01》超级经典一套鼠标控制左右滚动图片带自动翻滚

目录 HTML示例 图片示例 HTML示例 <html > <head> <meta http-equiv"Content-Type" content"text/html; charsetgb2312" /> <title>超级经典一套鼠标控制左右滚动图片带自动翻滚</title> <style type"text/css&quo…

jsf集成spring_Spring和JSF集成:MVC螺母和螺栓

jsf集成spring过去&#xff0c;我曾尝试将JSF与Spring MVC集成在一起&#xff0c;尽管我的第一次尝试成功了&#xff0c;但这远非理想。 这次&#xff0c;我决定做出一些关键决定来帮助我集中精力&#xff1a; 向后兼容。 支持JSF 1.2涉及的工作太多&#xff0c;而Spring 3.1中…

[BZOJ1007] [HNOI2008] 水平可见直线 (凸包)

Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的. 例如,对于直线:L1:yx; L2:y-x; L3:y0 则L1和L2是可见的,L3是被覆盖的. 给出n条直线,表示成yAxB的形式(|A|,|B|<500000),且n条直线两…

《javaScript100例|02》超级经典一套鼠标控制左右滚动图片带自动翻滚

目录 效果图 JS示例 源码地址&#xff1a; 效果图 JS示例 <title>JavaScript切换图片</title> <script> function showDaTu(src){ document.getElementById("defaultImg").srcsrc; } </script> <img src"wall1.jpg" id"…

抽象工厂设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

《javaScript100例|03》自写javaScript+CSS轮显效果

目录 效果图 代码示例 源码地址&#xff1a;自写JsCSS轮显效果.rar-互联网文档类资源-CSDN下载https://download.csdn.net/download/weixin_41937552/37380520 效果图 代码示例 <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equ…

linux shell 指令 诸如-d, -f, -e之类的判断表达式

文件比较运算符-e filename 如果 filename存在&#xff0c;则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录&#xff0c;则为真 [ -d /tmp/mydir ]-f filename 如果 filename为常规文件&#xff0c;则为真 [ -f /usr/bin/grep ]-L filename 如果 filenam…