Description

图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨。
这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使取出的点尽量多。
小D虽然图论很弱,但是也知道无向图最大独立集是npc,但是小C很仁慈的给了一个很有特点的图: 图中任何一条边属于且仅属于一个简单环,图中没有重边和自环。小C说这样就会比较水了。
小D觉得这个题目很有趣,就交给你了,相信你一定可以解出来的。
Input

第一行,两个数n, m,表示图的点数和边数。
第二~m+1行,每行两个数x,y,表示x与y之间有一条无向边。
Output

输出这个图的最大独立集。
Sample Input

5 6

1 2

2 3

3 1

3 4

4 5

3 5
Sample Output

2

HINT

100% n <=50000, m<=60000

Source

一开始觉得一脸不可做..后来发现是个仙人掌图..可以直接仙人掌DP
但是忘了仙人掌缩点姿势了..又看了一发hillan的缩点..
然后直接dp.f[i][0/1]表示整个图里点i选和不选,g[i][0/1]表示在某个环里点i选和不选,然后整体DP,遇到环单独进去DP

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 100010
#define GET (ch>='0'&&ch<='9')
using namespace std;
int n,m,u,v,cnt,top;
inline void in(int &x)
{char ch=getchar();x=0;while (!GET)    ch=getchar();while (GET) x=x*10+ch-'0',ch=getchar();
}
struct edge {   int to; edge *next; }e[MAXN<<1],*prev[MAXN];
inline void insert(int u,int v) {   e[++top].to=v;e[top].next=prev[u];prev[u]=&e[top];  }
int f[MAXN][2],g[MAXN][2];
int sta[MAXN],tp;
int low[MAXN],dfn[MAXN],deep[MAXN],fa[MAXN];
void dp(int x,int to)
{for (sta[0]=x,sta[tp=1]=to;sta[tp]!=x;sta[++tp]=fa[sta[tp-1]]);int t1,t2;g[0][0]=g[0][1]=0;for (int i=1;i<=tp;i++)g[i][1]=g[i-1][0]+f[sta[i]][1],g[i][0]=max(g[i-1][0],g[i-1][1])+f[sta[i]][0];t1=g[tp][0];g[0][0]=-1;for (int i=1;i<=tp;i++)g[i][1]=g[i-1][0]+f[sta[i]][1],g[i][0]=max(g[i-1][0],g[i-1][1])+f[sta[i]][0];t2=g[tp][1];f[x][1]=t2;f[x][0]=t1;
}
void dfs(int x)
{low[x]=dfn[x]=++cnt;f[x][1]=1;f[x][0]=0;for (edge *i=prev[x];i;i=i->next)if (i->to!=fa[x]){if (deep[i->to])    low[x]=min(low[x],dfn[i->to]);else{fa[i->to]=x;deep[i->to]=deep[x]+1;dfs(i->to);if (low[i->to]>dfn[x])  f[x][1]+=f[i->to][0],f[x][0]+=max(f[i->to][1],f[i->to][0]);low[x]=min(low[x],low[i->to]);}}for (edge *i=prev[x];i;i=i->next)if (i->to!=fa[x]&&low[i->to]==dfn[x]&&deep[i->to]!=deep[x]+1)   dp(x,i->to);
}
int main()
{for (in(n),in(m);m;m--) in(u),in(v),insert(u,v),insert(v,u);deep[1]=1;fa[1]=1;dfs(1);printf("%d\n",max(f[1][0],f[1][1]));
}

【BZOJ4316】小C的独立集相关推荐

  1. bzoj4316: 小C的独立集

    bzoj4316: 小C的独立集 链接 bzoj 思路 不是环的边==没有上司的舞会. 其他的,把环拿出来,考虑与深度最小的点u的交界处的点选不选,进行两次dp更新f[u] 代码 #include & ...

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

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

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

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

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

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

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

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

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

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

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

    4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MB Description 图论小王子小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. IplImage和Mat间的相互转换
  2. 修正 IE 的双倍页边距 bug
  3. 为什么你学C++就那么难?
  4. 树莓派 + Windows IoT Core 搭建环境监控系统
  5. CC2530通用I/O
  6. 理解TCP/IP协议
  7. Emgu.CV.CvInvoke的类型初始值设定项引发异常
  8. solr学习笔记-linux下配置solr
  9. 英语在线听力翻译器_在线翻译英语软件推荐 在线翻译英语软件哪个好
  10. LabelImg安装
  11. 计算机安装系统后鼠标无法使用,电脑重装系统后鼠标键盘不能用怎么办,鼠标键盘不能用解决方法...
  12. 千方百剂显示服务器错误,千方百剂远程服务器地址
  13. 决策树--CART算法
  14. VMware Workstation for Windows 历史版本
  15. 征服spring源码(一)
  16. linux strace php,在Linux下使用strace窥视Oracle LGWR进程
  17. 8月3日 我用吃证明她的手艺
  18. 硬核FutureTask解析
  19. 专业表操作鉴权(增、删、改、id查、全查、名字模糊查)
  20. Java 中XO 的概念

热门文章

  1. 齐纳二极管 稳压二极管 SOD123封装 正负区分
  2. Unity3D——AR小游戏
  3. web端第三方微信登录
  4. 【爬虫】Python爬虫经验分享--爬取码市招聘项目
  5. Coding 码市:携手开发者与创业者,重新定义软件外包
  6. 201709-2公共钥匙盒
  7. Category 分类、类别 总结 - iOS
  8. NSG2 安装、运行备忘
  9. 流量不清零:用户开心,运营商无奈
  10. 生活中的“人工智能”,哪些是你正在用的?