题目:

题目背景

割点

题目描述

给出一个n个点,m条边的无向图,求图的割点。

输入输出格式

输入格式:

第一行输入n,m

下面m行每行输入x,y表示x到y有一条边

输出格式:

第一行输出割点个数

第二行按照节点编号从小到大输出节点,用空格隔开

输入输出样例

输入样例#1:

6 7
1 2
1 3
1 4
2 5
3 5
4 5
5 6

输出样例#1:

1
5

说明

n,m均为100000

tarjan 图不一定联通!!!

题解:

洛谷的输出样例有误····md半天才看出来

另外注意叶节点不是割点!!!!!

还有就是原图不一定联通····

幸好打了这个板···不然遇到割点题就惨了

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int N=100001;
int fst[N],nxt[N*2],go[N*2],tot=0;
int n,m,low[N],dfn[N],cnt=0,father[N];
bool jud[N];
inline void comb(int a,int b)
{nxt[++tot]=fst[a],fst[a]=tot,go[tot]=b;nxt[++tot]=fst[b],fst[b]=tot,go[tot]=a;
}
inline void dfs(int u)
{low[u]=dfn[u]=++cnt;int child=0;for(int e=fst[u];e;e=nxt[e]){int v=go[e];if(!dfn[v]){father[v]=father[u];dfs(v);low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]&&father[u]!=u)  jud[u]=true;if(father[u]==u)  child++;}else  low[u]=min(low[u],dfn[v]);}if(father[u]==u&&child>=2)  jud[u]=true;
}
int main()
{//freopen("a.in","r",stdin);scanf("%d%d",&n,&m);int a,b;for(int i=1;i<=n;i++)father[i]=i;for(int i=1;i<=m;i++){scanf("%d%d",&a,&b);comb(a,b);}for(int i=1;i<=n;i++)if(!dfn[i]) dfs(i);int ans=0;for(int i=1;i<=n;i++)if(jud[i])ans++;cout<<ans<<endl;for(int i=1;i<=n;i++)if(jud[i])cout<<i<<" ";return 0;
}

转载于:https://www.cnblogs.com/AseanA/p/7472848.html

算法复习——割点(洛谷3388)相关推荐

  1. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)

    LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...

  2. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)

    CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...

  3. (快速幂算法+高精度)洛谷P1045 麦森数

    前言   故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...

  4. 图论算法——幻象迷宫(洛谷 P1363)

    题目选自洛谷P1363 大概就是说给出一个01迷宫类的地图,按照这个地图来扩展新地图,类似这样 然后问你是不是###可以走无限远. ###那么,我们可以很清晰的意识到,如果可以从点(x,y)出发,达到 ...

  5. KMP算法小总结 洛谷P3375 【模板】KMP字符串匹配

    提问:这里有一个长度为n的字符串str1和长度为m的字符串str2(n > = m),问在str1中str2出现了几次? 如果使用暴力求解,一个一个比较,在n和m都极大的情况下将花费非常多的不必 ...

  6. 贪心算法——部分背包(洛谷 P2240)

    贪心算法--部分背包问题 部分背包问题,顾名思义,部分 就是可以取一部分,也就是可以随意拆分的物品,是最简单经典的贪心问题. 解题步骤: 1)用结构体数组保存每个物品的价值及总重量.平均价值: 2)输 ...

  7. [Tarjan][割点] 洛谷 P3469 BLO-Blockade

    题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个城镇之间至多只有一条直接连接的道路.人们可以从任意一 ...

  8. 【c++算法刷题笔记】——洛谷2

    1. 洛谷练习--P1579 哥德巴赫猜想(升级版) 题目描述: 现在请你编一个程序验证哥德巴赫猜想. 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数. 输入格式: 仅有一行,包含一 ...

  9. 洛谷首页代码(百度编译器)

    洛谷是一个国内著名编程网站:分享一下他首页的未登录源代码: ​ <!DOCTYPE html> <html class="no-js" lang="zh ...

最新文章

  1. 如何在 WebAPI 中启用 CORS
  2. dubbo使用nacos作为注册中心
  3. linux添加启动脚本文件夹,linux – 将脚本中的符号链接添加到rc.d文件夹中以在系统启动期间启动进程...
  4. web Server支持 perl
  5. win7 32位系统安装postmant无法正常启动。启动显示黑屏界面
  6. Flutter 技术介绍
  7. 面试、笔试中常用的SQL语句(数据库知识必杀)一共50个!!!
  8. gentoo Wireless Configuration
  9. 串口软件与uPs测试,智能化UPS的软件设计及串口通信实现
  10. PAT日志 1147 Heaps
  11. 【概率论与数理统计】猴博士 笔记 p24-25 条件概率密度函数、求两个随机变量形成的函数的分布
  12. 腾讯2017秋招笔试编程题--游戏任务标记
  13. pixel 3 变焦_D3变焦—缺少的手册
  14. arcengine-栅格数据详解
  15. WhbtomT(半路出家) 的每日英语 收集 (四)
  16. javascript gbk en/decode
  17. 1660s功耗多少w_gtx660满载功耗是多少
  18. 发哥莫慌!这56亿让区块链帮你搞定
  19. 企业怎么通过网络推广打开知名度?
  20. 百络网警网络监控软件部署方案

热门文章

  1. wps 插件_【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
  2. PAT乙级题解目录——更新ing
  3. 集训8.21树状数组讲解
  4. 九大背包问题专题--多重背包问题(二进制优化方法;单调队列问题)
  5. vs2019配置opencv4.3
  6. C++ STL 容器元素排列之next_permutation和prev_permutation的使用示范
  7. 快速排序法实战入门(推荐)
  8. js排序算法详解-希尔排序
  9. python实现tkinter可视化一
  10. python批量实现将文件夹内的每张图片分割成多张