BZOJ2689 : 堡垒
问题等价于每个三角形里至少选择两个点。
考虑拓扑,每次取出度数为$2$的点$x$,代表一个只与最多一个三角形相邻的三角形$(x,y,z)$。
如果$x$已选,那么$(x,y)$以及$(x,z)$都已经被覆盖,无需再选其它点。
否则因为至少要选两个点,选$y$和$z$一定最优。
时间复杂度$O(n)$。
#include<cstdio>
const int N=100010;
int n,i,x,y,z,d[N],g[N],v[N<<2],nxt[N<<2],ed,vis[N],h,t,q[N],ans,f[N];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline void add(int x,int y){d[x]++;v[++ed]=y;nxt[ed]=g[x];g[x]=ed;}
int main(){read(n);for(i=1;i<=n+n-3;i++)read(x),read(y),add(x,y),add(y,x);for(h=i=1;i<=n;i++)if(d[i]==2)q[++t]=i;while(h<=t){x=q[h++];if(d[x]!=2)continue;vis[x]=1,y=0;for(i=g[x];i;i=nxt[i])if(!vis[v[i]]){if(y)z=v[i];else y=v[i];if((--d[v[i]])==2)q[++t]=v[i];}if(!f[x])f[y]=f[z]=1;}for(i=1;i<=n;i++)ans+=f[i];return printf("%d",ans),0;
}
转载于:https://www.cnblogs.com/clrs97/p/8203664.html
BZOJ2689 : 堡垒相关推荐
- 堡垒机高危命令正则表达式
堡垒机可以设置高危命令阻断,防止操作人员误操作造成删库跑路.但是什么是高危命令,需要管理员通过配置正则表达式,进行命令匹配. 今天2021年8月6日先匹配最常见的删库跑路命令 rm -rf / ,以下 ...
- 堡垒机jumpserver集群部署
本文参考老广二次开发后的堡垒机部署方案,在此基础上进行集群部署,提高其可靠性.尽管国外已经有类似的功能的堡垒机的发布,但是还是要感谢老广在百忙之中开发出更加实用的堡垒机. 本文内容虽然亲测,但内容难免 ...
- 企业IT运维的“安全终结者”-堡垒机指南
为什么说堡垒机是企业IT运维的"安全终结者"? 作为内网安全的"终结者",堡垒机究竟是个什么模样.所谓"堡垒主机"(简称"堡垒机& ...
- 「系统架构」什么是堡垒机?为什么需要堡垒机?
来源:https://www.toutiao.com/i6881462700229329421 什么是堡垒机 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而 ...
- python运维实战--跨堡垒机连接二级服务器上传文件
python运维实战--跨堡垒机连接二级服务器上传文件 paramiko的有关概念和操作 Welcome to Paramiko! - Paramiko documentation 这个python脚 ...
- 更安全的堡垒机登录方法
Hi,all 目前现状: 每个同事的私钥和公钥都保存在bastion服务器,bastion如果被攻破,bastion后端的服务器安全就荡然无存了.基于这种考虑,现在把公钥和私钥保存在自己的本地,bas ...
- 基于python的堡垒机
一 堡垒机的架构 堡垒机的核心架构通常如下图所示: 二.堡垒机的一般执行流程 管理员为用户在服务器上创建账号(将公钥放置服务器,或者使用用户名密码) 用户登陆堡垒机,输入堡垒机用户名密码,显示当前用户 ...
- iTerm2配置自动通过堡垒机登录服务器
为了保障网络和数据安全,越来越多公司使用堡垒机.iTerm作为一个好用的终端利器,要实现自动通过堡垒机登录服务器的方式有多种.下面我就来介绍一种通过expect脚本的方式完成配置. 第一步,进入/us ...
- 关于开源堡垒机Jumpserver二次开发
针对市场上商业堡垒机动辄七八十万的投入,一般屌丝公司都是伤不起,只能砸机兴叹,开源堡垒机自然是一个方案.是拿来即用吗,NO,那是作死,不说安全.性能.并发,高可用,光维护资产.用户账号密码.授权,就可 ...
最新文章
- Linux环境kafka安装
- MaximumGap的思想
- TCP和UDP可以同时监听相同的端口
- ActiveMQ集群
- [导入]浅析.Net下的AppDomain编程
- adf开发_如何在ADF中将参数传递给ActionListener
- SpringBoot整合阿里云OSS上传文件
- Java中线程的创建有两种方式
- java代码sudo命令_讓Java程序運行sudo命令
- 将时间戳转为中国标准时间
- 最新版Mysql安装步骤
- Matlab textscan
- Qualcomm MPM introduction
- 基于hyperleger fabric区块链的校园化妆品交易平台搭建
- win easypanel安装php,windows下kangle虚拟主机-kangleeasypanel安装图文教程以及心得
- C#编写中英文虚拟键盘
- ZigBee组网流程
- 白盒测试概述及其方法简介
- 建筑安全检查标准怎么计算机,建筑施工安全检查标准评分 怎么算
- 什么是jsp,它有什么用+jsp的本质是什么
热门文章
- centos7下安装mysql5.6_CentOS7安装后MySQL5.6如何配置MySQL5.6呢?
- linux java.policy_Linux部署Java环境
- IDEA新项目代码上传到gitlab远程仓库
- java 动态加载jni_JNI静态注册与动态注册详解
- HDU——1134 Game of Connections
- 第一个关于selenium项目
- mount error 12 = Cannot allocate memory
- 7-21-第三篇 validation相关操作
- Java线程:新特征-线程池
- 移植性问题のLPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换 转