#4376 种树

题面
有一个N个点M条边的无向图,每次选择一个点,并删除该点及其相邻的边,如果变成了一棵树,这这个点就是我们需要的。请找出满足条件的可能的点。
对于 40%的数据:n,m&lt;=1000n,m&lt;=1000n,m<=1000;
另外存在 10%的数据:m=n−1m=n-1m=n−1;
另外存在 20%的数据:m=nm=nm=n;
对于 100%的数据:n,m&lt;=100000n,m&lt;=100000n,m<=100000

输入
第一行2个正整数N,M,表示N个点M条边,保证N>=2
接下来M行,每行2个整数U,V表示u,v有一条无向边,数据保证无自环与重边

输出
第一行是一个整数ans,表示一共有ans个可能的点
接下来一行输出ans个整数,用空格隔开,按从小到大输出可能的点(数据保证至少存在一个可能的点)

样例输入
6 6
1 2
1 3
2 4
2 5
4 6
5 6

样例输出
3
4 5 6

SOL
暴力怎么打不说了,讲一讲正解。
观察发现,你删去一个点后,剩下n−1n-1n−1个点,得到一棵树,意味着剩下n−2n-2n−2条边,也就是说你删掉一个度数为m−(n−2)m-(n-2)m−(n−2)的点,如果图仍然连通(也就是说你删掉的那个点在原图中不是一个割点),那么就把这个点统计到答案中。
记录每个点的度数,并用tarjantarjantarjan求出原图中的割点,这道题就做完了。

代码:

#include<bits/stdc++.h>
using namespace std;
#define N 100005
int n,m;
int ans,output[N];
vector<int>e[N];
inline int rd(){int data=0,w=1;static char ch=0;ch=getchar();while((!isdigit(ch))&&ch!='-')ch=getchar();if(ch=='-')w=-1,ch=getchar();while(isdigit(ch))data=(data<<1)+(data<<3)+ch-'0',ch=getchar();return data*w;
}
int dfn[N],low[N],tcnt,cut[N];
void dfs(int u,int fa){int son=0;low[u]=dfn[u]=++tcnt;for(int register i=0;i<e[u].size();i++){int v=e[u][i];if(!dfn[v]){son++;dfs(v,u);low[u]=min(low[u],low[v]);if(low[v]>=dfn[u])cut[u]=1;        }else if(dfn[v]<dfn[u]&&v!=fa)low[u]=min(low[u],dfn[v]);if(son==1&&u==1)cut[u]=0;}
}
int main(){freopen("tree.in","r",stdin);freopen("tree.out","w",stdout);n=rd();m=rd();for(int register i=1;i<=m;i++){int u=rd(),v=rd();e[u].push_back(v);e[v].push_back(u);}for(int register i=1;i<=n;i++)if(!dfn[i])dfs(i,i);for(int register i=1;i<=n;i++){if(e[i].size()==m-n+2&&!cut[i])output[++ans]=i;}printf("%d\n",ans);for(int register i=1;i<=ans;i++)printf("%d ",output[i]);return 0;
}

[FROM WOJ]#4376 种树相关推荐

  1. 华华和月月种树(牛客)

    题意: 华华看书了解到,一起玩养成类的游戏有助于两人培养感情.所以他决定和月月一起种一棵树.因为华华现在也是信息学高手了,所以他们种的树是信息学意义下的. 华华和月月一起维护了一棵动态有根树,每个点有 ...

  2. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  3. 宏基因组合种树第292期—侧柏、樟子松,为祖国绿化做贡献

    宏基因组蚂蚁森林公益合种团队.现诚招队友,带你3000~5000g能量种10~20万能量大树,每天浇水一千,每种树循环种.热爱种树.保证支付宝每天10点前浇水1000g,无水可自行退出,未按时浇水即被 ...

  4. 宏基因组合种树第290期—油松

    宏基因组蚂蚁森林公益合种团队.现诚招队友,带你3000~5000g能量种10~20万能量大树,每天浇水一千,每种树循环种.热爱种树.保证支付宝每天10点前浇水1000g,无水可自行退出,未按时浇水即被 ...

  5. 宏基因组合种树第285期,胡杨专车

    宏基因组蚂蚁森林公益合种团队.现诚招队友,带你3000~5000g能量种10~20万能量大树,每天浇水一千,每种树循环种.热爱种树.保证支付宝每天10点前浇水1000g,无水可自行退出,未按时浇水即被 ...

  6. 宏基因组蚂蚁森林公益合种树项目,支持祖国绿化事业,让世界更美好

    宏基因组蚂蚁森林公益合种团队.现诚招队友,带你3000~5000g能量种10~20万能量大树,每天浇水一千,每种树循环种.热爱种树.保证支付宝每天10点前浇水1000g,无水可自行退出,未按时浇水即被 ...

  7. 宏基因组合种树,2-4天领证

    很多朋友都在支付宝里面玩过蚂蚁森林,为大家支持中国绿化公益事业的行动点赞. 有没有羡慕小伙伴满满的植树证书,也希望自己为绿化做贡献,但又感觉自己的力量太渺小. 现在机会来了,宏基因组公众号发起的合种树 ...

  8. 宏基因组合种树,2-4天领证,1/2号车满员,3号车成立,机会来了

    很多朋友都在支付宝里面玩过蚂蚁森林,为大家支持中国绿化公益事业的行动点赞. 有没有羡慕小伙伴满满的植树证书,也希望自己为绿化做贡献,但又感觉自己的力量太渺小. 现在机会来了,宏基因组公众号发起的合种树 ...

  9. 支付宝蚂蚁森林合种树,2-4天领证,1/2号车满员,3号车成立

    很多朋友都在支付宝里面玩过蚂蚁森林,为大家支持中国绿化公益事业的行动点赞. 有没有羡慕小伙伴满满的植树证书,也希望自己为绿化做贡献,但又感觉自己的力量太渺小. 现在机会来了,宏基因组公众号发起的合种树 ...

最新文章

  1. 卷积神经网络中用1*1 卷积有什么作用或者好处呢?
  2. codis3数据迁移探索
  3. 史上讲的最好的Java NIO与IO的区别与应用
  4. CentOS6静态网络配置
  5. 新概念英语(1-73)The way to King Street
  6. vue 外卖app(3) 引入阿里图标
  7. 灾备知识总结:容灾与备份区别、灾备技术、容灾体系规划
  8. MySQL中常见的单行函数(下)
  9. 检索 COM 类工厂中 CLSID 为 { } 的组件时失败,原因是呈现以下错误: 80040154
  10. nlp中的经典深度学习模型(一)
  11. C++基础学习(01)--(介绍,环境配置,基本语法,注释)
  12. MySQL学习足迹记录01--SOURCE,SHOW
  13. Spring MVC 4 - Hello World Tutorial
  14. 卖不动了,5G资费套餐再降价,网友:再等等再等等
  15. Oracle数据库的数据类型
  16. 决策树ID3算法,计算过程
  17. 通过Modbus转EtherNetIP网关连接AB PLC的配置案例
  18. html svg折线带圆角,SVG / d3.js上的矩形的一个角的圆角(svg / d3.js rounded corner
  19. 基本保险金额和保额的意思和区别是什么?
  20. html中怎么写css代码,html style样式标签元素教程

热门文章

  1. 毕业论文章节标题或摘要与页眉距离不同——解决方案
  2. 前端与移动开发-----CSS(三大特性+盒子模型原理)
  3. linux系统如何调屏幕亮度,Linux系统怎样调整屏幕亮度
  4. 背景图轮播 响应式 插件 vegas的使用和下载
  5. 联想小新14.20190717
  6. 公式编写1000问32-34
  7. Java版坦克大战游戏毕业设计
  8. php中文网第六期,php中文网在这里给大家汇总了最热门最全面的php面试题
  9. 计算机网络体系结构前沿论文,计算机前沿技术趋势论文_计算机论文3000字_大一计算机导论论文1200字...
  10. linux interfaces文件,Linux /etc/network/interfaces配置接口方法