洛谷 1330 封锁阳光大学
时间:2019-10-08
本文章向大家介绍洛谷 1330 封锁阳光大学,主要包括洛谷 1330 封锁阳光大学使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【题解】
注意这个图不保证联通。
对各个联通块尝试进行黑白染色,不能染色的话无解,可以染色的话选择点数较小的一部分加入到答案中。
【代码】
#include<cstdio> #include<cstring> #include<algorithm> #define LL long long #define rg register #define N 200010 using namespace std; int n,m,tot,col[N],poi,cnt,ans,last[N]; bool ok=1; struct edge{ int to,pre; }e[N]; inline int read(){ int k=0,f=1; char c=getchar(); while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar(); return k*f; } void dfs(int now,int color){ if(!ok) return; poi++; if(color==1) cnt++; for(rg int i=last[now],to;i;i=e[i].pre) if(col[to=e[i].to]==-1) dfs(to,col[to]=color^1); else if(col[to=e[i].to]!=(color^1)){ ok=0; return; } } int main(){ n=read(); m=read(); for(rg int i=1;i<=n;i++) col[i]=-1; for(rg int i=1;i<=m;i++){ int u=read(),v=read(); e[++tot]=(edge){u,last[v]}; last[v]=tot; e[++tot]=(edge){v,last[u]}; last[u]=tot; } for(rg int i=1;i<=n;i++)if(col[i]==-1){ dfs(i,col[i]=poi=cnt=0); if(!ok) break; ans+=min(cnt,poi-cnt); // printf("[%d %d %d]\n",i,poi,cnt); } if(ok) printf("%d\n",ans); else puts("Impossible"); return 0; }
原文地址:https://www.cnblogs.com/DriverLao/p/11634476.html
- Flash/Flex学习笔记(27):摄像头/麦克风的视频/音量指示器
- Flash/Flex学习笔记(26):AS3自定义右键菜单
- Python27中Json对中文的处理
- Python在VSCode中进入交互界面调试
- CentOS7下单机部署RabbltMQ环境的操作记录
- Flash/Flex学习笔记(24):粒子效果
- 针对业务日志的监控报警设置
- 对广晟有色的数据分析
- Flash/Flex学习笔记(22):滤镜学习
- Python输出信息
- Flash/Flex学习笔记(21):利用colorTransform改变对象的颜色及透明度
- 网站访问状态和超时时间监控报警设置
- 为treeview添加客户端事件
- Flash/Flex学习笔记(20):贝塞尔曲线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 为了不让代码看起来像一坨* 我在工作中反复用了这个
- 在 Go 语言中 Patch 非导出函数
- SpringCloud 配置中心服务端配置解析流程分析
- Qt多线程编程之线程池
- PWN:Tcache Attack原理
- [Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
- [Go]GO语言实战-GO-FLY在线客服gorm导入sql文件
- Day7.数据类型-集合
- 详解一条查询select语句和更新update语句的执行流程
- JSP 开发环境搭建与项目运行(二)
- Activity启动时生命周期汇总
- 「程序员」Flutter:从网络获取数据遇到的坑
- 程序员:拿到新电脑如何配置Git环境
- What?数据量巨大还不分库分表?JDBC 入门与项目实战
- 简书:如何去掉图片下面烦人的“图片发自简书App”