这是我见过最水的蓝题

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

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

摄像头一个可以监视到另一个可以看做有向边,用邻接链表储存就好了,我也不知道邻接矩阵到底能不能过保险起见还是用邻接链表。 可以想到,松鼠要想不被抓住必须砸没有被别的摄像头监视的摄像头,那么就是入度为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. sqoop与hbase导入导出数据

    环境:sqoop1.4.6+hadoop2.6+hbase1.1+mysql5.7 说明: 1.文中的导入导出的表结构借鉴了网上的某篇博客 2.mysql导入hbase可以直接通过sqoop进行 3. ...

  2. 【解决方案】文件上具有 Web 标记,请删除 Web 标记

    错误: 无法处理文件 Form1.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记.要想处理这些文件,请删除 Web 标记.  解决方法: 文件-右键-属性 点击”解 ...

  3. .NET core Quartz 定时任务框架 demo

    开始先建个空的web项目. 创建一个新类 QuartzFactory 狠狠的复制就完事了. public class QuartzFactory : IJobFactory { private rea ...

  4. win10 mars xlog编译

    win10 mars xlog编译   一. 环境准备 安装 cmake 以及 python2.7, 以及下载 ndk-r16b,并配置环境变量 NDK_ROOT 指向 ndk 路径. 如果是 Win ...

  5. Weak Session IDs

    工具的使用 首先github上下载火狐插件(正版收费),按F12调用 服务器生成sessionID通过response返回给浏览器,sessionID存放在浏览器cookie中,然后再通过cookie ...

  6. C++ STL vector类型

    vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象).vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的.注:vector容器内存放的所有对象都是经过 ...

  7. 【面试突击】-缓存击穿(布隆过滤器 Bloom Filter)

    原文地址:https://blog.csdn.net/fouy_yun/article/details/81075432 前面的文章介绍了缓存的分类和使用的场景.通常情况下,缓存是加速系统响应的一种途 ...

  8. js模块基础练习题

    题目描述 完成函数 createModule,调用之后满足如下要求: 1.返回一个对象 2.对象的 greeting 属性值等于 str1, name 属性值等于 str2 3.对象存在一个 sayI ...

  9. Oracle数据库之操作符及函数

    一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: -- 工资加1000 from emp; 3.比较操作符: -- 比较运算符(between and包头不包 ...

  10. Java 读取控制台输入

    方式1:InputStreamReader+BufferedReader package my_package; import java.io.BufferedReader; import java. ...