Description
挑竹签——小时候的游戏
夏夜,早苗和诹访子在月光下玩起了挑竹签这一经典的游戏。
挑竹签,就是在桌上摆上一把竹签,每次从最上层挑走一根竹签。如果动了其他的竹签,就要换对手来挑。在所有的竹签都被挑走之后,谁挑走的竹签总数多,谁就胜了。
身为神明的诹访子自然会让早苗先手。为了获胜,早苗现在的问题是,在诹访子出手之前最多能挑走多少竹签呢?
为了简化问题,我们假设当且仅当挑最上层的竹签不会动到其他竹签。

Input
输入文件mikado.in。
第一行输入两个整数n,m, 表示竹签的根数和竹签之间相压关系数。
第二行到m+1 行每行两个整数u,v,表示第u 根竹签压住了第v 根竹签。

Output
输出文件mikado.out。
一共一行,一个整数sum,表示最多能拿走sum 根竹签。

Sample Input
6 6
1 2
2 3
3 1
4 3
4 5
6 5

Sample Output
3
样例解释:
一共有6 根竹签,其中1 压住2,2 压住3,3 压住1,4 压住3 和5,6 压住5。最优方案中,我们可以依次挑走4、6、5 三根竹签。而剩下的三根相互压住,都无法挑走。所以最多能挑走3 根竹签。

Data Constraint
对于20% 的数据,有1<= n,m<= 20。
对于40% 的数据,有1 <= n,m <= 1 000。
对于100% 的数据,有1 <= n,m <= 1 000 000。
.
.
.
.
.

分析

拓扑排序即可
.
.
.
.
.

程序:
#include<iostream>
#include<stdio.h>
using namespace std;
int a[1000001],h[1000001],next[1000001],chu[1000001],ru[1000001];
int i,l,n,m,ans,tj;
void add(int x,int y)
{ru[y]++;chu[++tj]=y;next[tj]=h[x];h[x]=tj;
}int main()
{freopen("mikado.in","r",stdin);freopen("mikado.out","w",stdout);cin>>n>>m;for (int i=1;i<=m;i++){int x,y;cin>>x>>y;add(x,y);}int k=1;l=0;for (int i=1;i<=n;i++)if (!ru[i]) a[++l]=i;while (k<=l){int s=a[k++];ans++;int w=h[s];while (w!=0){ru[chu[w]]--;if (!ru[chu[w]]) a[++l]=chu[w];w=next[w];}}cout<<ans;return 0;fclose(stdin);fclose(stdout);
}

转载于:https://www.cnblogs.com/YYC-0304/p/9499927.html

【NOIP2015模拟10.27】挑竹签相关推荐

  1. 【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  2. 4270. 【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  3. jzoj4270. 【NOIP2015模拟10.27】魔道研究

    题目描述 Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire o ...

  4. [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  5. 2018.07.12【2018提高组】模拟B组 【NOIP2015模拟10.27】魔法阵

    #Description 帕秋莉·诺蕾姬,有着"不动的大图书馆" 的称号,擅长使用各种各样的属性魔法. --<东方求闻史记> 一如既往地,帕秋莉在图书馆中研究着魔法.今 ...

  6. jzoj4271. 【NOIP2015模拟10.27】魔法阵

    题目描述 Description 帕秋莉·诺蕾姬,有着"不动的大图书馆" 的称号,擅长使用各种各样的属性魔法. --<东方求闻史记> 一如既往地,帕秋莉在图书馆中研究着 ...

  7. 【JZOJ B组】【NOIP2015模拟10.27】魔道研究

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  8. jzoj4270 [NOIP2015模拟10.27]魔道研究 线段树

    Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Mar ...

  9. 2018.07.12【2018提高组】模拟B组 【NOIP2015模拟10.27】魔道研究

    #Description "我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力." --<The Grimoire of Ma ...

最新文章

  1. 最大流问题模板-java-蓝桥杯-算法训练-网络流裸题
  2. python职能-高级Python开发工程师职位描述与岗位职责任职要求
  3. clone下来的代码push到自己的远程仓库中
  4. linux禁止客户端上传文件_实战 FastDFS Java 客户端上传文件
  5. .NET Core微服务之基于Ocelot实现API网关服务
  6. linux测试固态硬盘读写速度,在 Linux 上检测 IDE/SATA SSD 硬盘的传输速度
  7. 模板模式(部分方法延迟到子类实现)
  8. Python学习之==数组(二)
  9. windows下SVN日志反馈中文乱码的解决方法
  10. (转载)hibernate3.0配置文件模板
  11. Feed流及其常见算法简介
  12. 分布式光伏运维服务器,分布式光伏电站专业运维管理
  13. [几何] BZOJ 4246 两个人的星座
  14. [SPI+DMA] 驱动WS2812B显示时钟
  15. java架构师_如何成为一个资深Java架构师?
  16. MySQL - 索引的数据结构
  17. 手机上能学计算机一级b,全国计算机等级考试一级B的学习方法
  18. [转]JFFS2源代码情景分析Beta2
  19. 热更新方案-难不难在于你
  20. python三维图视角旋转_在python-matplotlib-Jupyter Noteb中交互式旋转三维绘图

热门文章

  1. 云炬60s看世界20211125
  2. 二十二、“此生无悔入华夏,来世还在种花家”(2021.7.1)
  3. 涵盖 14 大主题!最完整的 Python 学习实例集来了!
  4. OpenGL编程指南13:光源移动
  5. LM3S1138驱动函数SysCtlPeripheralEnable解析
  6. 7种CSS圆角框解决方案
  7. android.support.v7.app.ActionBarActivity
  8. 修改mysql的max_allowed_packet值
  9. scanf family API 高级用法
  10. diff命令输出格式解读