这是我见过最水的蓝题

这不就是拓扑排序板子题吗

题目大意;松鼠砸烂摄像头不被抓住

摄像头一个可以监视到另一个可以看做有向边,用邻接链表储存就好了,我也不知道邻接矩阵到底能不能过保险起见还是用邻接链表。 可以想到,松鼠要想不被抓住必须砸没有被别的摄像头监视的摄像头,那么就是入度为0的点,很简单的可以想到拓扑排序,因为拓扑排序就是从一个没有入边的点开始一步步走,每一步都是走同样没有入边的点(和多米诺骨牌很像)。拓扑排序里的没有入边和这里的没有被监控的摄像头可以很好的联系起来,就可以知道是用拓扑排序的了。

先找到第一个入度为0的点,然后从这个点开始继续往下找,如果在某一个点找不到其他的入度为0的点,那就是jj了,松鼠很可怜,必定会被抓住了那就输出剩余的摄像头的数量。 (数量可以用一个计数器每一次可以安全摧毁一个摄像头那计数器就加一,到不能的时候就输出摄像头的总数减去计数器,如果计数器等于摄像头的总数那就输出“YES”然后结束)

AC代码

#include<cstdio>
#include<stack> using namespace std; struct node
{
int u,v,ne;
}a[];
int n,num,num1;
int head[];
int into[];
int bian[];
bool use[]; void add(int u,int v)
{
a[++num].ne = head[u];
a[num].u = u;
a[num].v = v;
head[u] = num;
} int main()
{
stack<int>s;
scanf("%d",&n);
for(int i = ;i <= n;++ i)
{
int x,y;
scanf("%d%d",&x,&y);
if(use[x] == false)
bian[++ num1] = x;
while(y --)
{
int xx;
scanf("%d",&xx);
add(x,xx);
into[xx] ++;
if(use[xx] == false)
bian[++ num1] = xx;
}
}
int qwq = ;
for(int i = ;i <= num1;++ i)
{
if(into[bian[i]] == )
{
s.push(i);qwq ++;
}
}
while(!s.empty())
{
int u = s.top();
s.pop();
for(int i = head[u];i != ;i = a[i].ne)
{
into[a[i].v] --;
if(into[a[i].v] == )
{
s.push(a[i].v);
qwq ++;
}
}
}
if(qwq == n)
printf("YES\n");
else
printf("%d\n",n - qwq);
return ;
}

洛谷 题解 P2721 【摄像头】的更多相关文章

  1. 洛谷 题解 UVA572 【油田 Oil Deposits】

    这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...

  2. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  3. 洛谷题解P4314CPU监控--线段树

    题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...

  4. 洛谷题解 CF777A 【Shell Game】

    同步题解 题目翻译(可能有童鞋没读懂题面上的翻译) 给你三张牌0,1,2. 最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张...... 最后 ...

  5. 洛谷题解 CF807A 【Is it rated?】

    同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...

  6. 洛谷题解 P1138 【第k小整数】

    蒟蒻发题解了 说明:此题我用的方法为桶排(我翻了翻有人用了桶排只不过很难看出来,可能有些重复的,这个题只是作为一个专门的桶排来讲解吧) (不会算抄袭吧 ‘QWaWQ’) 简单来说(会的人跳过就行): ...

  7. 【洛谷题解】P2303 [SDOi2012]Longge的问题

    题目传送门:链接. 能自己推出正确的式子的感觉真的很好! 题意简述: 求\(\sum_{i=1}^{n}gcd(i,n)\).\(n\leq 2^{32}\). 题解: 我们开始化简式子: \(\su ...

  8. 洛谷题解 P2865 【[USACO06NOV]路障Roadblocks】

    链接:https://www.luogu.org/problemnew/show/P2865 题目描述 Bessie has moved to a small farm and sometimes e ...

  9. 洛谷题解:P1209 【[USACO1.3]修理牛棚 Barn Repair】

    原题传送门:https://www.luogu.org/problemnew/show/P1209 首先,这是一道贪心题.  我们先来分析它的贪心策略.  例如,样例:  4 50 18  3 4 6 ...

随机推荐

  1. Drool7s 什么叫KIE和生命周期-系列03课

    KIE是缩写,knowledge is everything.可以理解成一个上层接口,本质是由很多个实现类去实现功能的. 另外关于drool7s的生命周期,请看下图 本文只是让你了解drools7的一 ...

  2. 超全、超详的Spring Boot配置讲解笔记

    springboot默认加载配置 SpringBoot使用两种全局的配置文件,全局配置文件可以对一些默认配置进行修改. application.properties application.yml 这 ...

  3. mysql修改后启动my.cnf报错Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

    mysql中文乱码解决 mysql修改my.cnf后启动报错Starting MySQL... ERROR! The server quit without updating PID file (/v ...

  4. Teamviewer显示“未就绪,请检查您的连接”解决办法

    打开TeamViewer一直提示“未就绪,请检查您的连接”,一直会弹出一个框提示检查网路设置什么. 解决办法:修改DNS为114.114.114.114,然后TeamViewer就显示网络正常. 为什 ...

  5. C#服务器全面讲解与制作

    C#服务器全面讲解与制作一 环境配置与基础架构 环境配置 基础的服务器架构 这里我会讲解高级的C#服务器的全面制作流程 会对大家有很大的帮助 不过在这个教程中主要是讲解服务器的制作,所以不会讲解客户端 ...

  6. Softmax学习笔记

    softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚 ...

  7. Java知识回顾 (15) 文档注释

    说明注释允许你在程序中嵌入关于程序的信息. 你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中,使你更加方便的记录你的程序信息. javadoc 标签 标签 描述 示例 @auth ...

  8. BFC 到底是什么?

    MDN 对 BFC 的描述: 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素 ...

  9. honeydctl命令

    # honeydctl Honeyd 1.5c Management Console Copyright (c) 2004 Niels Provos. All rights reserved. See ...

  10. MySQL MGR--MGR部署

    MGR部署 场景描述: 使用三台服务器搭建一个简单MGR集群,使用MySQL 5.7.24版本,服务器列表为: 192.168.1.147 192.168.1.148 192.168.1.149 1. ...