洛谷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)的更多相关文章

  1. 洛谷3388 【模板】割点 tarjan算法

    题目描述 给出一个n个点,m条边的无向图,求图的割点. 关于割点 在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点就叫做割点(cut vertex / articul ...

  2. 连通分量模板:tarjan: 求割点 &amp;&amp; 桥 &amp;&amp; 缩点 &amp;&amp; 强连通分量 &amp;&amp; 双连通分量 &amp;&amp; LCA(近期公共祖先)

    PS:摘自一不知名的来自大神. 1.割点:若删掉某点后.原连通图分裂为多个子图.则称该点为割点. 2.割点集合:在一个无向连通图中,假设有一个顶点集合,删除这个顶点集合,以及这个集合中全部顶点相关联的 ...

  3. 图论--割点--Tarjan模板

    #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...

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

    [模板]割点 割点集合:一个顶点集合V,删除该集合的所有定点以及与这些顶点相连的边后,原图不连通,就称集合V为割点集合 点连通度:最小割点集合中的顶点数 边连通度:最小割边集合中的边数 割点:割点集合 ...

  5. poj 1523 割点 tarjan

    Description Consider the two networks shown below. Assuming that data moves around these networks on ...

  6. 割点 —— Tarjan 算法

    由于对于这一块掌握的十分不好,所以在昨天做题的过程中一直困扰着我,好不容易搞懂了,写个小总结吧 qwq~ 割点 概念 在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点 ...

  7. poj1523 求割点 tarjan

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7678   Accepted: 3489 Description C ...

  8. POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】

    <题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...

  9. POJ 1523 SPF 割点 Tarjan

    SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9317   Accepted: 4218 Description C ...

随机推荐

  1. 常见企业IT支撑【2、samba共享文件夹】

    samba共享文件夹,较Window自带的比较:开源,安全 建议安装samba4,兼容性好 1.安装samba #yum -y install samba4 samba4-client 2.备份sam ...

  2. python--logging库学习_第一波

    简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') lo ...

  3. POJ 2785 4 Values whose Sum is 0(折半枚举+二分)

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 25675   Accep ...

  4. 项目中Map端数据处理不均匀性分析

    Map任务的不均匀性 最近发现Map端数据越来越不均匀,而处理输入的数据,写到本地磁盘的数据量都差不多,我们随便拿出来两个attempt任务(当前map数量为64个),33和45,33的counter ...

  5. Mac brew安装MongoDB

    brew简介安装 brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew类似ubuntu系统下的apt-ge ...

  6. 关于setTimeout的一个逻辑题

    function hh() { for (var i = 1; i <=5; i++) { setTimeout(function(){ console.log(i); },100) } con ...

  7. Django 组件-cookie 与 session

    会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...

  8. 通过Java代码装配Bean

    上面梳理了通过注解来隐式的完成了组件的扫描和自动装配,下面来学习下如何通过显式的配置的装配bean 二.通过Java类装配bean 在前面定义了HelloWorldConfig类,并使用@Compon ...

  9. 在C#中控制ListBox某一行的字体颜色

    例1 private void Form1_Load(object sender, EventArgs e) { listBox1.Items.Add("红色"); listBox ...

  10. 「小程序JAVA实战」小程序上传短视频(46)

    转自:https://idig8.com/2018/09/14/xiaochengxujavashizhanxiaochengxushangchuanduanshipin45/ 个人信息:用户上传短视 ...