北京市商汤科技开发有限公司面向青少年研发了一款智能伴游机器人-- AI 伴游小精灵。一经推出,深受孩子们的喜爱,可爱又机智的小精灵会想出很多有趣的小游戏来启迪孩子们思考。今天,小精灵给你提出了一个神奇又有趣的多米诺骨牌小游戏。

你手上有一副神奇的多米诺骨牌,数量有 nn 个,编号为 1 \sim n1∼n。它们之间存在着 n-1n−1 个单向推倒关系,即推倒 xx 会导致 yy 也被推倒,而且这样的关系都满足 x<yx<y,且每组关系中的 yy 不会重复。

一开始只有 11 号骨牌不会被其他骨牌推倒,所以你只需要推倒 11 号骨牌就可以推倒所有的骨牌。

小精灵给你提的问题是:如果我们允许去掉 22 个骨牌,那么在最坏情况下你最少需要推倒几个骨牌才能使所有骨牌倒下?

输入格式
第一行输入一个整数 nn,表示有 nn 个多米诺骨牌。

接下来有 n-1n−1 行的输入,每行输入两个整数 x,yx,y,表示推倒 xx 会导致 yy 也被推倒。

输出格式
输出一个整数表示去掉两个骨牌之后,最坏情况下你最少需要推倒几个骨牌才能使所有骨牌倒下。

数据规模
n \le 5 \times 10^3n≤5×10 
3

样例输入
7
1 2
1 3
1 5
2 4
4 7
4 6
样例输出
5

思路:找两个出度最多的点,将与这两个点有关的入度都减一,最后找这些入度为0的点的个数。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <cstdio>
#include <vector>
#include <string>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <set>
#define fori(a,b) for(int i=a;i<=b;i++)
#define forj(a,b) for(int j=a;j<=b;j++)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const int M=5e3+10;
const int MAX=1e18+10;
const double PI = acos(-1);
struct A
{int x=0;//入度int y=0;//出度
}a[M];
int mapp[M][M];
int main()
{int n,i,j,ans=0,c,d;cin>>n;memset(mapp,0,sizeof(mapp));for(i=0;i<n-1;i++){cin>>c>>d;a[c].y++;a[d].x++;mapp[c][d]=1;}int max1=-1,max2=-1,p=-1,q=-1;for(i=1;i<=n;i++){if(a[i].y>=max1){max1=a[i].y;p=i;}}for(i=1;i<=n;i++){if(a[i].y>=max2&&i!=p){max2=a[i].y;q=i;}}for(i=1;i<=n;i++){if(mapp[p][i]==1){a[i].x--;}if(mapp[q][i]==1){a[i].x--;}}for(i=1;i<=n;i++){if(a[i].x==0&&i!=p&&i!=q)ans++;}cout<<ans<<endl;retu

商汤的AI伴游小精灵(2019 计蒜之道 初赛 第一场)相关推荐

  1. 2017 计蒜之道 初赛 第一场 A题B题

    阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标系来描述棋盘: ...

  2. 2018 计蒜之道 初赛 第一场

    百度无人车 二分 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = ...

  3. 2015 计蒜之道 初赛 第一场 搜狗输入法的分词算法

    注意点 我理解的这句话的时候出现了偏差. 数字表示中不能有多余的 0,比如 0k05 是不能被当做一个十五进制数字的. 题面的描述没有任何问题,但是注意0k05虽然不是十五进制数字,但是却要输出0k0 ...

  4. 2016 计蒜之道 初赛 第一场 青云的服务器密钥

    青云给每台服务器设置了一个由小写字母a-z组成的密钥.密钥的易破解程度定义如下: 对于密钥 S1..SnS_1..S_nS​1​​..S​n​​,我们需要首先计算其对应的π\piπ 数组.对于任意的 ...

  5. 2016计蒜之道初赛第一场----A青云的服务器密钥【贪心】

    青云给每台服务器设置了一个由小写字母a-z组成的密钥.密钥的易破解程度定义如下: 对于密钥 S_1..S_nS​1​​..S​n​​,我们需要首先计算其对应的 \piπ 数组.对于任意的 i(2 \l ...

  6. 2017 计蒜之道 初赛 第一场

    阿里的新游戏 阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标 ...

  7. 2017 计蒜之道 初赛 第一场 A 阿里的新游戏

    题链:https://nanti.jisuanke.com/t/15499 这题观察图纸可知成三线段上的相邻点之间的距离有1,2,3三种情况的,同时要成线段必然是同横坐标或者纵坐标,然后我们排除掉穿过 ...

  8. 计蒜之道初赛第一场-阿里的新游戏

    阿里的新游戏 阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标 ...

  9. 2017 计蒜之道 初赛 第一场 A题(阿里的新游戏)

    阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标系来描述棋盘: ...

  10. 2017 计蒜之道 初赛 第一场 A、B题

    A题 阿里的新游戏 题目概述: 阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋 ...

最新文章

  1. Java服务提供_JAVA 服务提供者框架介绍
  2. matlab 基于Topsis的熵权法2
  3. Struts2/WebWork高危漏洞(远程执行任意代码)
  4. 系统自动登录及盘符无法双击打开问题处理
  5. java获取keyvault_利用KeyVault来加强存储Azure Storage访问密钥管理
  6. C# 开发WinCE 遇到Motorola PDA 的问题记录
  7. Java经典面试题总结(一)
  8. Android 隐藏底部三个虚拟按键
  9. linux dialog 源码,Linux dialog详解(图形化shell)
  10. 数据结构链表之栈——解决括号匹配问题和逆波兰表达式求值问题——6
  11. 1年薪水=3盒药?一位癌症晚期病人告诉你:别乱买保险
  12. JavaScript常用开发框架总结
  13. SqlServe零碎要点---sqlserver如何使用日期计算,DateTime类型的格式化以及语法格式等等。
  14. selenide UI自动化进阶二 pageObject实现页面管理
  15. CCF201809-4 再卖菜(100分)【DFS】
  16. char 数组和 int 之间转化
  17. adminlte中数据表格datatable.js中的完整使用方法小案例
  18. 一篇文章带你大致了解5G关键技术、协议架构、网络优化覆盖、业务测试与验证
  19. 台式电脑接路由器步骤_路由器怎么连接台式电脑来上网?
  20. Everything指定用XYplorer打开目录路径

热门文章

  1. can是什么时候处于显性_CAN总线什么情况下为空闲状态? - 全文
  2. 【网络安全】网络安全期末大题 复习题
  3. 裸眼3d项目,数字平原是这样制作的
  4. 防火墙文件打印共享服务器,防火墙 网络打印机共享服务器
  5. 进安全模式提示”Press ENTER to continue loading SPTD.sys”
  6. 拥抱变化的 2015
  7. Altium Designer 的技巧补充
  8. 2-2日期时间类型基础
  9. 高性能Java模板引擎BSL-1.0.1发布
  10. 华为路由器DNS服务器未响应,路由器dns辅服务器未响应