我们需要拓扑一下。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define maxv 100500
#define maxe 200500
using namespace std;
int n,m,x,y,g[maxv],nume=,d[maxv],size[maxv],ans=;
queue <int> q;
bool flag[maxv];
struct pnt
{
int id,rank;
}p[maxv];
struct edge
{
int v,nxt;
}e[maxe];
bool cmp(pnt x,pnt y){return x.rank<y.rank;}
void addedge(int u,int v)
{
e[++nume].v=v;
e[nume].nxt=g[u];
g[u]=nume;
}
void topusort()
{
for (int i=;i<=n;i++)
{
if (!d[i])
{
p[i].rank=;
q.push(i);
}
}
while (!q.empty())
{
int head=q.front();q.pop();
for (int i=g[head];i;i=e[i].nxt)
{
int v=e[i].v;
if (!--d[v])
{
p[v].rank=p[head].rank+;
q.push(v);
}
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
addedge(x,y);d[y]++;
}
for (int i=;i<=n;i++) p[i].id=i;
topusort();
sort(p+,p+n+,cmp);
for (int i=n;i>=;i--)
{
int x=p[i].id;
for (int j=g[x];j;j=e[j].nxt)
{
int v=e[j].v;
flag[x]=true;size[x]+=size[v];
}
if (!flag[x]) size[x]=;
}
for (int i=;i<=n;i++)
{
if ((p[i].rank==) && (flag[p[i].id])) ans+=size[p[i].id];
else if (p[i].rank!=) break;
}
printf("%d\n",ans);
return ;
}

BZOJ 4562 食物链的更多相关文章

  1. bzoj 4562 [Haoi2016]食物链

    4562: [Haoi2016]食物链 Time Limit: 10 Sec  Memory Limit: 128 MB Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 ...

  2. 洛谷 P3183 BZOJ 4562 [HAOI2016]食物链

    题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...

  3. BZOJ 4562: [Haoi2016]食物链(拓扑排序)

    题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. ...

  4. BZOJ 4562: [Haoi2016]食物链 拓扑排序

    建反图,跑一个拓扑排序dp即可. Code: #include <bits/stdc++.h> #define ll long long #define N 100005 #define ...

  5. BZOJ 4562 搜索...

    思路: 统计入度&出度 每搜到一个点 in[v[i]]--,f[v[i]]+=f[t]; if(!in[v[i]])if(out[v[i]])q.push(v[i]);else ans+=f[ ...

  6. 8.6培训 D1

    今天是赵和旭老师讲课(也是 zhx) 动态规划 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解(有点像分治?) 更具体的,假设我们可以计算出小问题的最优解,那么我们凭 ...

  7. 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)

    4562: [Haoi2016]食物链 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 133  Solved: 112[Submit][Status] ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. 【poj 1182】食物链(图论--带权并查集)

    题意:有3种动物A.B.C,形成一个"A吃B, B吃C,C吃A "的食物链.有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类. ...

随机推荐

  1. iOS 中对 HTTPS 证书链的验证

    这篇文章是我一边学习证书验证一边记录的内容,稍微整理了下,共扯了三部分内容: HTTPS 简要原理: 数字证书的内容.生成及验证: iOS 上对证书链的验证. HTTPS 概要 HTTPS 是运行在 ...

  2. JDK1.7-LinkedList循环链表优化

    最近在看jdk1.7的时候,发现LinkedList 和1.6中的变化. 首先,简单介绍一下LinkedList: LinkedList是List接口的双向链表实现.由于是链表结构,所以长度没有限制: ...

  3. 转--CSS选择器详解(一)常用选择器

    今天复习一下CSS的知识,看了篇文章觉得很好,转来备用. 转自:http://www.cnblogs.com/fattydoit/p/3492028.html 目录 类型选择器 类选择器 ID选择器 ...

  4. 再谈HTML

    关于WEB 采用B/S计算模式开发的应用程序我们一般称为Web应用程序. WEB三大层面: 网页的结构部分:结构的定义使用HTML语言(超文本标记语言Hyper Text Mark Up Langua ...

  5. JS比较好用的一些方法搜集

    JS比较好用的一些方法搜集 Math.ceil(x) -- 返回大于等于数字参数的最小整数(取整函数),对数字进行上舍入 Math.floor(x)--返回小于等于数字参数的最大整数,对数字进行下舍入 ...

  6. __attribute__特性介绍以及变量和函数特定布局设置

    ARM的MDK编译__attribute__介绍:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348bc/Ciafc ...

  7. EF5.X Code First表关联与延迟加载

    1-指定导航属性,会自动生成外键,命名规则为:“表名_主键名”2-默认情况下与导航属性的主键名称相同的字段会自动被标记为外键3-通过[ForeignKey]标记指定实体类的属性为外键,4-方式2的升级 ...

  8. [转]C#中的Monitor类

    object obj=new object(); Monitor在锁对象obj上会维持两个线程队列R和W以及一个引用T : (1) T是对当前获得了obj锁的线程的引用(设此线程为CurrThread ...

  9. 如何对HTML进行编码和解码?

    答案:这个比较简单//HTML进行编码和解码Console.WriteLine(System.Web.HttpUtility.HtmlEncode("<h1>我是中文字符!< ...

  10. 使用ContentProContentProvider共享生词本数据

    自定义ContentProvider需要在项目清单中注册: import android.content.ContentProvider;import android.content.ContentU ...