[模板]割点(tarjan)
洛谷P3388
注意:记得tarjan的打法
注意割点的判断条件:子节点个数>2并且为根节点
当它不为根节点时并且low[to]>dfn[u]
判断时是在子节点未被记录的时候
#include<bits/stdc++.h>
using namespace std;
inline int sc()
{ int x=,f=;char ch=getchar();
while(!isdigit(ch)){ if(ch==)f=-;ch=getchar();}
while(isdigit(ch)) { x=x*+ch-;ch=getchar();}
return x*f;
}
#define man 100010
int n,m;
/*edge*/
int head[man<<],num=;
struct edge
{ int next,to;}e[man<<];
inline void add(int from,int to)
{ e[++num].next=head[from];
e[num].to=to;
head[from]=num;
} int dep=,dfn[man],low[man],cnt=;
bool vis[man],sta[man];
inline void tarjan(int u,int fa)
{ int son=;
low[u]=dfn[u]=++dep;
for(int i=head[u];i;i=e[i].next)
{ int to=e[i].to;
if(!dfn[to])
{ son++;
tarjan(to,u);
low[u]=min(low[u],low[to]);
if((fa==-&&son>=)||(fa!=-&low[to]>=dfn[u]))
{ if(sta[u]==) cnt++;sta[u]=;}
}
else if(to!=fa)
low[u]=min(low[u],dfn[to]);
}
}
int main()
{ n=sc();m=sc();
for(int i=,x,y;i<=m;i++)
{ x=sc(),y=sc();
add(x,y);add(y,x);
}
for(int i=;i<=n;i++)
if(!dfn[i]) tarjan(i,-);
cout<<cnt<<endl;
for(int i=;i<=n;i++)
if(sta[i]) cout<<i<<" ";
cout<<endl;
return ;
}
[模板]割点(tarjan)的更多相关文章
- 洛谷3388 【模板】割点 tarjan算法
题目描述 给出一个n个点,m条边的无向图,求图的割点. 关于割点 在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点就叫做割点(cut vertex / articul ...
- 连通分量模板:tarjan: 求割点 && 桥 && 缩点 && 强连通分量 && 双连通分量 && LCA(近期公共祖先)
PS:摘自一不知名的来自大神. 1.割点:若删掉某点后.原连通图分裂为多个子图.则称该点为割点. 2.割点集合:在一个无向连通图中,假设有一个顶点集合,删除这个顶点集合,以及这个集合中全部顶点相关联的 ...
- 图论--割点--Tarjan模板
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...
- 【洛谷P3388】(模板)割点
[模板]割点 割点集合:一个顶点集合V,删除该集合的所有定点以及与这些顶点相连的边后,原图不连通,就称集合V为割点集合 点连通度:最小割点集合中的顶点数 边连通度:最小割边集合中的边数 割点:割点集合 ...
- poj 1523 割点 tarjan
Description Consider the two networks shown below. Assuming that data moves around these networks on ...
- 割点 —— Tarjan 算法
由于对于这一块掌握的十分不好,所以在昨天做题的过程中一直困扰着我,好不容易搞懂了,写个小总结吧 qwq~ 割点 概念 在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点 ...
- poj1523 求割点 tarjan
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7678 Accepted: 3489 Description C ...
- POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】
<题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...
- POJ 1523 SPF 割点 Tarjan
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9317 Accepted: 4218 Description C ...
随机推荐
- Unit03: Spring Web MVC简介 、 基于XML配置的MVC应用 、 基于注解配置的MVC应用
Unit03: Spring Web MVC简介 . 基于XML配置的MVC应用 . 基于注解配置的MVC应用 springmvc (1)springmvc是什么? 是一个mvc框架,用来简化基于mv ...
- C++直接初始化和复制初始化2
现在正式对C++中对象建立和初始化做一个总结. (1)复制初始化的基本原理 我们知道,对象在内存中的直接表象是在内存中占有一个一定大小的空间.分配空间是建立对象的第一步.但是刚刚分配的空间就像一个没有 ...
- 1045 access denied for user 'root'@'localhost' using password yes
mysql -u root -p 方法一: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --sk ...
- 传输类型为 "multipart/form-data" 的传送写法 (上传文件 和图片)
一: 传字符的情况: 抓包数据: 传输的数据: python-request写法: 二:上传图片的情况:
- java之IO整理(下)
一:对象的序列化 对象序列化就是把一个对象变为二进制数据流的一种方法. 一个类要想被序列化,就行必须实现java.io.Serializable接口.虽然这个接口中没有任何方法,就如同之前的clone ...
- 10g RAC常用开启关闭命令 – SRVCTL用法
10G RAC: srvctl 1. Grammar: srvctl <command> <object> [<options]] available <comma ...
- Entity Framework使用汇总
EF的发展历程 还是先来说一下EF从诞生到现在这几年的发展历程吧.在EF最初的版本中,作为一个ORM组件其通过EDM文件(里面是一些xml)来配置数据库与实体类之间的映射,实现数据进出数据库的控制.最 ...
- PHP5 ini配置文件优化
1.1使用tmpfs作为缓存加速缓存的文件目录 [root@php-node1 ~]# mount -t tmpfs tmpfs /dev/shm/ -o size=256m [root@php-no ...
- 【Oracle】Oracle改变日志归档模式
一.确认工作模式: 1.查询V$DATABASE SQL>select log_mode from v$database; 归档日志:ARCHIVELOG 2.执 ...
- .net Reactor之限指定设备使用
.net Reactor之license限指定设备使用 上一篇(https://www.cnblogs.com/s313139232/p/9908400.html)中记录了.net Reactor对d ...