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的独立集相关推荐

  1. BZOJ4316 小C的独立集 【仙人掌】

    题目 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使取出的点尽量多. ...

  2. 2019.02.07 bzoj4316: 小C的独立集(仙人掌+树形dp)

    传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形dpdpdp解决. fi,0/1f_{i,0/1}fi,0/1​表示第iii个点不选/选的最大独立集. 然后fi,0+ ...

  3. bzoj4316: 小C的独立集(仙人掌+树形dp)

    传送门 题意:给出一个仙人掌森林求其最大独立集. 思路:如果没有环可以用经典的树形 d p dp dp解决. f i , 0 / 1 f_{i,0/1} fi,0/1​表示第 i i i个点不选/选的 ...

  4. 【BZOJ-4316】小C的独立集 仙人掌DP + 最大独立集

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 57  Solved: 41 [Submit][Status][Discus ...

  5. bzoj 4316: 小C的独立集(仙人掌树形DP)

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 682  Solved: 380 [Submit][Status][Disc ...

  6. BZOJ 4316: 小C的独立集 仙人掌 + 树形DP

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MB Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. ...

  7. 【BZOJ4316】小C的独立集

    Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使 ...

  8. 【BZOJ4316】小C的独立集(仙人掌,动态规划)

    题面 BZOJ 题解 除了普通的动态规划以外,这题还可以用仙人掌的做法来做. 这里没有必要把圆方树给建立出来 Tarjan T a r j a n Tarjan的本质其实就是一个构建 dfs d f ...

  9. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

最新文章

  1. 读书笔记-《增长黑客》-好产品是增长的根本
  2. Linux下C的线程同步机制
  3. 货拉拉周胜馥,这次赌“输”了?
  4. 无法打开虚拟机,获取该虚拟机的所有权失败。 主机上的某个应用程序正在使用该虚拟机。
  5. 使用FgSegNet进行前景图像分割
  6. Win7系统还原声音图标的方法
  7. Spring Cloud微服务之业务物理删除(十)
  8. 大数据之-Hadoop之HDFS_基于JAVA的开发_客户端环境测试---大数据之hadoop工作笔记0055
  9. 计算机网络---TCP/UDP协议(一)
  10. excel删除重复数据保留一条_Excel怎么快速查找和删除重复数据
  11. debian 修改apache2 https 端口为11443
  12. Atiitt 技术部的基本发展战略 attilax总结 艾龙 著 1. 战略的解释,即是 大概纲领与方法 1 2. 技术的基本战略是,培训,吸收与改造,recos,预研,技术储备 1 2.1.
  13. 大学matlab教程,大学数学MATLAB应用教程
  14. Python安装jieba库
  15. 如何打造高绩效团队?团队成功的关键要素?
  16. ANC主动降噪技术的原理
  17. hyperv 安装xp
  18. MySQL 中STD、STDDEV、STDDEV_SAMP 标准差函数的区别
  19. 5 款开源的 Linux 策略模拟游戏 | Linux 中国
  20. 软件开发人员如何记笔记

热门文章

  1. C++学习笔记-----std::string的=,+,+=对int,char类型操作数的支持
  2. c语言图片见水印,[求助]C语言 bmp文件加上水印
  3. stcisp一直检测单片机_三种方法对比:STC51单片机实现免冷启动
  4. Consul etcd ZooKeeper euerka 对比
  5. 递归法实现库函数strlen
  6. 电脑重装系统后提示invalid partition table怎么解决
  7. 数据结构课程设计(VS2012-c语言):算术表达式实现(加减乘除)
  8. 一分钟安装IDA pro7.0
  9. atom 代码都是白色 怎么显示颜色_IBC1.0完成,ATOM为什么没涨?
  10. Java hibernate假外键_java – Hibernate:没有实体类的外键,只能通过id