BZOJ 4562 食物链
我们需要拓扑一下。
- #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 食物链的更多相关文章
- bzoj 4562 [Haoi2016]食物链
4562: [Haoi2016]食物链 Time Limit: 10 Sec Memory Limit: 128 MB Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 ...
- 洛谷 P3183 BZOJ 4562 [HAOI2016]食物链
题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3.... ...
- BZOJ 4562: [Haoi2016]食物链(拓扑排序)
题面: https://www.lydsy.com/JudgeOnline/problem.php?id=4562 一句话题意:给一个DAG,求有多少条不完全相同的链,使链首入度为0,链尾出度为0. ...
- BZOJ 4562: [Haoi2016]食物链 拓扑排序
建反图,跑一个拓扑排序dp即可. Code: #include <bits/stdc++.h> #define ll long long #define N 100005 #define ...
- 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[ ...
- 8.6培训 D1
今天是赵和旭老师讲课(也是 zhx) 动态规划 利用最优化原理把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解(有点像分治?) 更具体的,假设我们可以计算出小问题的最优解,那么我们凭 ...
- 【BZOJ-4562】食物链 记忆化搜索(拓扑序 + DP)
4562: [Haoi2016]食物链 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 133 Solved: 112[Submit][Status] ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 【poj 1182】食物链(图论--带权并查集)
题意:有3种动物A.B.C,形成一个"A吃B, B吃C,C吃A "的食物链.有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类. ...
随机推荐
- 5个开发人员不应该错过的最好跨平台PHP编辑器
IDE(集成开发环境)或换句话说PHP编辑器是开发人员在构建移动或Web应用必不可少的工具.在这篇文章中,我们将讨论有关PHP编辑器并分享5个最好的跨平台的PHP编辑器. 1. NetBeans Ne ...
- php 正则匹配中文
在javascript中,要判断字符串是中文是很简单的.比如:var str = "php编程";if (/^[\u4e00-\u9fa5]+$/.test(str)) {aler ...
- ARM流水线关键技术分析与代码优化
引 言 流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,AR ...
- 数据库索引<二> 如何创建索引
前面一篇说法了索引结构,和几种索引在数据表上的结构,了解了索引可以为查询服务,这篇说一说如何创建索引. >平时可能的创建方式 这个系统中要用到A字段,B字段,C字段做为查询的条件,联接的条件较多 ...
- linux tar 增量备份命令
tar --newer-mtime "2013-09-17 00:00:00" -zcvf /var/www/good.tar.gz spider/
- MySQL 建库、建用户及建表事项
1,MySQL建库语句比较简单,一句话: create database tppamltest3 2,创建用户及授权: insert into mysql.user(Host,User,Passwor ...
- mke2fs/mks.etc3/fstab/mount指令
一.mke2fs指令mkfs.etc3 /dev/sdb1指令 主要新学习 cat /etc/filesystem //查看文件类型 mkfs. tab键有提示 //按照系统默认的值格式化 m ...
- java 面向对象编程--第十章 接口
1. 接口可以看做是抽象类的特例.抽象类中可以定义抽象方法,也可以定义具体方法.但接口只能定义抽象方法.所有接口可以看作行为的抽象.定义接口使用关键字interface,实现接口使用关键字imple ...
- js控制html元素的readonly属性
html元素假设为只读,那么其readonly="readonly",我们现在想通过js来改变readonly属性为可以输入. 初始时,两个输入框都是只读.点击change按钮后, ...
- Js笔试题之返回只包含数字类型的数组
如js123ldka78sdasfgr653 => [123,78,653] 一般做法 分析: 1.循环字符串每个字符,是数字的挑出来拼接在一起,不是数字的,就给他空的拼个逗号 2.将新字符串每 ...