题目大意:求出一个无向图的割点

题解:$tarjan$,若一个点为根节点(起始节点),只需要判断它有多少个儿子,若不是根节点,假如$low_v\geqslant DFN_v$就说明$v$没有返祖边,即该节点$u$为割点。

卡点:1.多输出了一些数

  2.没有去重

C++ Code:

#include <cstdio>
#include <algorithm>
#define maxn 100010
using namespace std;
int n, m;
int ans[maxn], ansnum;int head[maxn], cnt;
struct Edge {int to, nxt;
} e[maxn << 1];
void add(int a, int b) {e[++cnt] = (Edge) {b, head[a]}; head[a] = cnt;
}int DFN[maxn], low[maxn], idx;
inline int min(int a, int b) {return a < b ? a : b;}
void tarjan(int u, int rt) {DFN[u] = low[u] = ++idx;int child = 0;for (int i = head[u]; i; i = e[i].nxt) {int v = e[i].to;if (DFN[v]) low[u] = min(low[u], DFN[v]);else {tarjan(v, rt);low[u] = min(low[u], low[v]);if (u == rt) child++;if (u != rt && low[v] >= DFN[u]) {ans[ansnum++] = u;}}}if (child >= 2) ans[ansnum++] = u;
}int main() {scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++) {int a, b;scanf("%d%d", &a, &b);add(a, b);add(b, a);}for (int i = 1; i <= n; i++) {if (!DFN[i]) tarjan(i, i);}sort(ans, ans + ansnum);ansnum = unique(ans, ans + ansnum) - ans;printf("%d\n", ansnum);for (int i = 0; i < ansnum - 1; i++) printf("%d ", ans[i]);if (ansnum) printf("%d\n", ans[ansnum - 1]);return 0;
}

转载于:https://www.cnblogs.com/Memory-of-winter/p/9525310.html

[洛谷P3388]【模板】割点(割顶)相关推荐

  1. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  2. 洛谷 P3388 【模板】割点(割顶) 根+非根+dfn[]+low[]+不一样的Tarjan算法

    洛谷  P3388 [模板]割点(割顶)  根+非根+dfn[]+low[]+不一样的Tarjan算法 Tarjan算法,详见https://blog.csdn.net/mrcrack/article ...

  3. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  4. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  5. 洛谷P3388 【模板】割点(割顶)

    /*表示割点模板很难理解.... 但是呢,可以将整个图用深搜来一步步递归.. dfn[x]<=low[tmp] && x!=mr的点就++: 完毕.... PS:小心第一个节点. ...

  6. 强连通分量:洛谷P3387 模板:缩点

    传送门 顾名思义,模板awa #include <cstdio> #include <cstring> #include <cmath> #include < ...

  7. 【后缀数组】洛谷P3809模板题

    题目背景 这是一道模板题. 题目描述 读入一个长度为 n n n 的由大小写英文字母或数字组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置. ...

  8. 洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)

    https://www.luogu.com.cn/problem/P1919 题目背景 本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源. 题目描述 给你两个正整数 a ...

  9. 洛谷 P1878 舞蹈课 —— 小顶堆

    This way 题意: 有 n个人参加一个舞蹈课.每个人的舞蹈技术由整数来决定.在舞蹈课的开始,他们从左到右站成一排.当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞.如果 ...

  10. 洛谷 p3372 模板-线段树 1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个 ...

最新文章

  1. 介绍4种HTML5 Canvas库
  2. servlet监听完成统计在线人数,显示在线人员列表(附源码)
  3. MPEG中面向沉浸式视觉体验的标准化活动
  4. postgres xshell copy 命令 内存溢出_良心国产工具,比Xshell好用还免费!
  5. 掌握这 25 条小贴士,快速提升数据可视化能力!
  6. 从Ubuntu命令行按进程名称杀死进程
  7. rest spring_Spring REST:异常处理卷。 2
  8. 小企业的第一台服务器如何选?
  9. HttpWatch工具简介及使用技巧(二)
  10. 教育未来JAVA培训中心笔记(一):初学者如何学好JAVA
  11. 35.伪造请求超时的ICMP数据包
  12. 光功率 博科交换机_博科光纤交换机zone划分命令方法
  13. 计算机发展的第四阶段为中小规模集成电路,第三代中小规模集成电路计算机.ppt...
  14. 循迹避障小车制作第一篇(tb6612模块与降压模块的使用)
  15. 傻子都能看懂的 财务报表入门
  16. Latex表格制作记录
  17. 【历史上的今天】5 月 19 日:Java 之父诞生;中国首家互联网公司成立;CP/M 操作系统发明者出生
  18. 数据质量控制与数据治理
  19. Atom 编辑器的语法导航
  20. SVN命令使用提示版本过旧的问题E155019

热门文章

  1. 20145203盖泽双《网络对抗技术》后门原理与实践
  2. LeetCode 407. Trapping Rain Water II
  3. bat(续五)-获取批处理文件所在路径
  4. 《大道至简》最后两章读后感
  5. servlet篇 之servlet实现
  6. 修改maven默认仓库(即repository)的路径
  7. Linux使用jstat命令查看jvm的GC情况(转)
  8. 【三支火把】--- 关于UEFIPCD的总结介绍
  9. 猪猪的机器学习笔记(十五)主题模型
  10. Oracle分页总汇