bzoj4316: 小C的独立集
bzoj4316: 小C的独立集
链接
bzoj
思路
不是环的边==没有上司的舞会。
其他的,把环拿出来,考虑与深度最小的点u的交界处的点选不选,进行两次dp更新f[u]
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
int read() {int x = 0, f = 1; char s = getchar();for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';return x * f;
}
int n, m;
struct node {int v, nxt;
}e[N << 1];
int head[N << 1], tot;
void add(int u, int v) {e[++tot].v = v ;e[tot].nxt = head[u];head[u] = tot;
}
int low[N], dfn[N], cnt, fa[N], f[N][2] ;
void work(int u, int y) {int t0, t1, f0=0, f1=0;for(int i = y;i != u;i = fa[i]){t0 = f0 + f[i][0], t1 = f1 + f[i][1];f0 = max(t0, t1), f1 = t0;}f[u][0] += f0;f0 = 0, f1 = -1e9;for(int i = y;i != u;i = fa[i]){t0 = f0 + f[i][0], t1 = f1 + f[i][1];f0 = max(t0, t1), f1 = t0;}f[u][1] += f1;
}
void tarjan(int u, int father) {fa[u] = father;low[u] = dfn[u] = ++cnt;f[u][1] = 1, f[u][0] = 0;for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].v;if (!dfn[v]) {tarjan(v, u);low[u] = min(low[u], low[v]);} else if (v != father) low[u] = min(low[u], dfn[v]);if (dfn[u] < low[v]) {f[u][0] += max(f[v][1], f[v][0]);f[u][1] += f[v][0];}}for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].v;if(u != fa[v] && dfn[v] > dfn[u])work(u, v);}
}
int main() {n = read(), m = read();for (int i = 0; i < m; ++i) {int u = read(), v = read();add(u, v), add(v, u);}tarjan(1, 0);printf("%d\n", max(f[1][0], f[1][1]));return 0;
}
转载于:https://www.cnblogs.com/dsrdsr/p/10957520.html
bzoj4316: 小C的独立集相关推荐
- BZOJ4316 小C的独立集 【仙人掌】
题目 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使取出的点尽量多. ...
- 2019.02.07 bzoj4316: 小C的独立集(仙人掌+树形dp)
传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形dpdpdp解决. fi,0/1f_{i,0/1}fi,0/1表示第iii个点不选/选的最大独立集. 然后fi,0+ ...
- bzoj4316: 小C的独立集(仙人掌+树形dp)
传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形 d p dp dp解决. f i , 0 / 1 f_{i,0/1} fi,0/1表示第 i i i个点不选/选的 ...
- 【BZOJ-4316】小C的独立集 仙人掌DP + 最大独立集
4316: 小C的独立集 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 57 Solved: 41 [Submit][Status][Discus ...
- bzoj 4316: 小C的独立集(仙人掌树形DP)
4316: 小C的独立集 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 682 Solved: 380 [Submit][Status][Disc ...
- BZOJ 4316: 小C的独立集 仙人掌 + 树形DP
4316: 小C的独立集 Time Limit: 10 Sec Memory Limit: 128 MB Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. ...
- 【BZOJ4316】小C的独立集
Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...
- 【BZOJ4316】小C的独立集(仙人掌,动态规划)
题面 BZOJ 题解 除了普通的动态规划以外,这题还可以用仙人掌的做法来做. 这里没有必要把圆方树给建立出来 Tarjan T a r j a n Tarjan的本质其实就是一个构建 dfs d f ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
最新文章
- 读书笔记-《增长黑客》-好产品是增长的根本
- Linux下C的线程同步机制
- 货拉拉周胜馥,这次赌“输”了?
- 无法打开虚拟机,获取该虚拟机的所有权失败。 主机上的某个应用程序正在使用该虚拟机。
- 使用FgSegNet进行前景图像分割
- Win7系统还原声音图标的方法
- Spring Cloud微服务之业务物理删除(十)
- 大数据之-Hadoop之HDFS_基于JAVA的开发_客户端环境测试---大数据之hadoop工作笔记0055
- 计算机网络---TCP/UDP协议(一)
- excel删除重复数据保留一条_Excel怎么快速查找和删除重复数据
- debian 修改apache2 https 端口为11443
- Atiitt 技术部的基本发展战略 attilax总结 艾龙 著 1. 战略的解释,即是 大概纲领与方法	1 2. 技术的基本战略是,培训,吸收与改造,recos,预研,技术储备	1 2.1.
- 大学matlab教程,大学数学MATLAB应用教程
- Python安装jieba库
- 如何打造高绩效团队?团队成功的关键要素?
- ANC主动降噪技术的原理
- hyperv 安装xp
- MySQL 中STD、STDDEV、STDDEV_SAMP 标准差函数的区别
- 5 款开源的 Linux 策略模拟游戏 | Linux 中国
- 软件开发人员如何记笔记
热门文章
- C++学习笔记-----std::string的=,+,+=对int,char类型操作数的支持
- c语言图片见水印,[求助]C语言 bmp文件加上水印
- stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动
- Consul etcd ZooKeeper euerka 对比
- 递归法实现库函数strlen
- 电脑重装系统后提示invalid partition table怎么解决
- 数据结构课程设计(VS2012-c语言):算术表达式实现(加减乘除)
- 一分钟安装IDA pro7.0
- atom 代码都是白色 怎么显示颜色_IBC1.0完成,ATOM为什么没涨?
- Java hibernate假外键_java – Hibernate:没有实体类的外键,只能通过id