这是我见过最水的蓝题

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

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

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

    --a. 本月的第一天 select dateadd(mm, datediff(mm,0,getdate()), 0) as 本月的第一天 --b. 本月的最后一天 select dateadd(ms ...

  2. IE浏览器 location.href 不跳转

    var url = "https://www.cnblogs.com/zing"; location.href = url; window.event.returnValue = ...

  3. python 2.django的镜像安装与第一次项目创建-运行以及app创建

    django的设计模式 Django是一个遵循MVC设计模式的框架,MVC是Model.View.Controller的三个单词的简写.分别代表模型.视图.控制器. 而Django也是是一个MTV的设 ...

  4. Web漏洞扫描

    SkipFish skipfish语法格式,其他参数使用skipfish -h查看文档 skipfish -o skfish http://url/ -C 指定Cookie 最终会在~/root下面生 ...

  5. AngularJS 插值字符串 $interpolate

    定义: $interpolate:编译一段带有嵌入标记的语句,然后返回一个interpolate(插值)函数.使用: $interpolate(text,[mustHaveException],[tr ...

  6. 【转载】C#中List集合使用LastIndexOf判断元素最后一次出现的索引位置

    在C#的List集合操作中,有时候需要判断元素对象在List集合中第一次出现的索引位置信息,此时需要使用到List集合的IndexOf方法来判断,如果元素存在List集合中,则IndexOf方法返回所 ...

  7. Navicat连接腾讯云服务器上的数据库

    下面介绍Navicat连接腾讯云服务器上的数据库的两种方法: 方法一:[不需要修改相关远程客户端连接权限] 点击安装好的桌面navicat图标,进入后如下图: 连接方法:ssh中输入自己服务器的外网i ...

  8. vue中监听页面是否有回车键按下

    需求:当我在登录页面输入密码和账号后,按下回车键实现登录 mounted(){ let _this = this document.onkeydown = function(e) { if(e.key ...

  9. webpack练手项目之easySlide(一):初探webpack

    最近在学习webpack,正好拿了之前做的一个小组件,图片轮播来做了下练手,让我们一起来初步感受下webpack的神奇魅力.     webpack是一个前端的打包管理工具,大家可以前往:http:/ ...

  10. DOS命令_查询某个端口的占用情况并释放

    >netstat -aon | findstr “80″Proto   Local Address           Foreign Address         State         ...