算法复习——割点(洛谷3388)
题目:
题目背景
割点
题目描述
给出一个n个点,m条边的无向图,求图的割点。
输入输出格式
输入格式:
第一行输入n,m
下面m行每行输入x,y表示x到y有一条边
输出格式:
第一行输出割点个数
第二行按照节点编号从小到大输出节点,用空格隔开
输入输出样例
6 7 1 2 1 3 1 4 2 5 3 5 4 5 5 6
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)相关推荐
- 深入理解 操作系统 LRU算法(以洛谷P1540题为例)
LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...
- 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...
- (快速幂算法+高精度)洛谷P1045 麦森数
前言 故事的最后,让我们以一道十分经典的题目--<麦森数>来结尾.接受现实吧,总会有我们没准备过的高精度运算出现.我们固然可以提前把高精度的快速幂模板也准备好,但是总会有百密一疏的时候 ...
- 图论算法——幻象迷宫(洛谷 P1363)
题目选自洛谷P1363 大概就是说给出一个01迷宫类的地图,按照这个地图来扩展新地图,类似这样 然后问你是不是###可以走无限远. ###那么,我们可以很清晰的意识到,如果可以从点(x,y)出发,达到 ...
- KMP算法小总结 洛谷P3375 【模板】KMP字符串匹配
提问:这里有一个长度为n的字符串str1和长度为m的字符串str2(n > = m),问在str1中str2出现了几次? 如果使用暴力求解,一个一个比较,在n和m都极大的情况下将花费非常多的不必 ...
- 贪心算法——部分背包(洛谷 P2240)
贪心算法--部分背包问题 部分背包问题,顾名思义,部分 就是可以取一部分,也就是可以随意拆分的物品,是最简单经典的贪心问题. 解题步骤: 1)用结构体数组保存每个物品的价值及总重量.平均价值: 2)输 ...
- [Tarjan][割点] 洛谷 P3469 BLO-Blockade
题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个城镇之间至多只有一条直接连接的道路.人们可以从任意一 ...
- 【c++算法刷题笔记】——洛谷2
1. 洛谷练习--P1579 哥德巴赫猜想(升级版) 题目描述: 现在请你编一个程序验证哥德巴赫猜想. 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数. 输入格式: 仅有一行,包含一 ...
- 洛谷首页代码(百度编译器)
洛谷是一个国内著名编程网站:分享一下他首页的未登录源代码: <!DOCTYPE html> <html class="no-js" lang="zh ...
最新文章
- 如何在 WebAPI 中启用 CORS
- dubbo使用nacos作为注册中心
- linux添加启动脚本文件夹,linux – 将脚本中的符号链接添加到rc.d文件夹中以在系统启动期间启动进程...
- web Server支持 perl
- win7 32位系统安装postmant无法正常启动。启动显示黑屏界面
- Flutter 技术介绍
- 面试、笔试中常用的SQL语句(数据库知识必杀)一共50个!!!
- gentoo Wireless Configuration
- 串口软件与uPs测试,智能化UPS的软件设计及串口通信实现
- PAT日志 1147 Heaps
- 【概率论与数理统计】猴博士 笔记 p24-25 条件概率密度函数、求两个随机变量形成的函数的分布
- 腾讯2017秋招笔试编程题--游戏任务标记
- pixel 3 变焦_D3变焦—缺少的手册
- arcengine-栅格数据详解
- WhbtomT(半路出家) 的每日英语 收集 (四)
- javascript gbk en/decode
- 1660s功耗多少w_gtx660满载功耗是多少
- 发哥莫慌!这56亿让区块链帮你搞定
- 企业怎么通过网络推广打开知名度?
- 百络网警网络监控软件部署方案
热门文章
- wps 插件_【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
- PAT乙级题解目录——更新ing
- 集训8.21树状数组讲解
- 九大背包问题专题--多重背包问题(二进制优化方法;单调队列问题)
- vs2019配置opencv4.3
- C++ STL 容器元素排列之next_permutation和prev_permutation的使用示范
- 快速排序法实战入门(推荐)
- js排序算法详解-希尔排序
- python实现tkinter可视化一
- python批量实现将文件夹内的每张图片分割成多张