#include <algorithm>
#include <cstring>
#include <cstdio> using namespace std; const int N(+);
int n,m,u,v;
int head[N],sumedge;
struct Edge
{
int to,next;
Edge(int to=,int next=) :
to(to),next(next){}
}edge[N<<]; void ins(int from,int to)
{
edge[++sumedge]=Edge(to,head[from]);
head[from]=sumedge;
} int dfn[N],low[N],tim;
int cutpoint[N],cutedge[N],sum; void DFS(int now,int pre)
{
low[now]=dfn[now]=++tim;
int sumtredge=,if_cutpoint=;
for(int i=head[now];i!=-;i=edge[i].next)
if((i^)!=pre)
{
int go=edge[i].to;
if(!dfn[go])
{
sumtredge++;
DFS(go,i);
if(low[go]>=dfn[now]) if_cutpoint=;
if(low[go]>dfn[now]) cutedge[i>>]=true;
low[now]=min(low[now],low[go]);
}
else low[now]=min(low[now],dfn[go]);
}
if(pre==-)
{
if(sumtredge>) cutpoint[now]=true;
}
else if(if_cutpoint) cutpoint[now]=true;
} int main()
{
/*freopen("made.txt","r",stdin);
freopen("myout.txt","w",stdout);*/ scanf("%d%d",&n,&m);
sumedge=-; //使边之间更有关系
memset(head,-,sizeof(head));
for(int i=;i<=m;i++)
{
scanf("%d%d",&u,&v);
ins(u,v);
ins(v,u);
}
for(int i=;i<=n;i++)
if(!dfn[i]) DFS(i,-);
for(int i=;i<=n;i++)
if(cutpoint[i]) printf("%d ",i);
printf("\n");
for(int i=;i<sumedge;i++)
if(cutedge[i]) printf("%d ",i);
return ;
}

Tarjan 割点割边【模板】的更多相关文章

  1. tarjan 割点 割边

    by   GeneralLiu tarjan 求 割点 割边 无向图  的 割点 割边: 对于无向连通图来说, 如果删除   一个点以及与它相连的边   之后, 使得这个图不连通, 那么该点为割点 : ...

  2. 求割点 割边 Tarjan

    附上一般讲得不错的博客 https://blog.csdn.net/lw277232240/article/details/73251092 https://www.cnblogs.com/colle ...

  3. Tarjan算法 (强联通分量 割点 割边)

    变量解释: low 指当前节点在同一强连通分量(或环)能回溯到的dfn最小的节点 dfn 指当前节点是第几个被搜到的节点(时间戳) sta 栈 vis 是否在栈中 ans 指强连通分量的数量 top ...

  4. 【学习整理】Tarjan:强连通分量+割点+割边

    Tarjan求强连通分量 在一个有向图中,如果某两点间都有互相到达的路径,那么称中两个点强联通,如果任意两点都强联通,那么称这个图为强联通图:一个有向图的极大强联通子图称为强联通分量.   算法可以在 ...

  5. tarjan求割边割点

    tarjan求割边割点 内容及代码来自http://m.blog.csdn.net/article/details?id=51984469 割边:在连通图中,删除了连通图的某条边后,图不再连通.这样的 ...

  6. Tarjan算法与割点割边

    目录 Tarjan算法与无向图的连通性 1:基础概念 2:Tarjan判断割点 3:Tarjan判断割边 Tarjan算法与无向图的连通性 1:基础概念 在说Tarjan算法求解无向图的连通性之前,先 ...

  7. 图的连通性——Tarjan算法&割边&割点

    tarjan算法 原理: 我们考虑 DFS 搜索树与强连通分量之间的关系. 如果结点 是某个强连通分量在搜索树中遇到的第⼀个结点,那么这个强连通分量的其余结点肯定 是在搜索树中以 为根的⼦树中. 被称 ...

  8. 【模拟7.25】回家(tarjan V-DCC点双连通分量的求法及缩点 求割点)模板题

    作为一道板子题放在第二题令人身心愉悦,不到一个小时码完连对拍都没打. 关于tarjan割点的注意事项: 1.在该板子中我们求的是V-DCC,而不是缩点,V-DCC最少有两个点组成,表示出掉一个块里的任 ...

  9. {part2}DFN+LOW(tarjan)割边

    首先非树边肯定不是割边,因为去掉它DFS树不受影响,只要还能生成一棵DFS树那么图就是连通的. 然后割掉一条树边只可能造成一个点与它的父亲不连通. 那好办,也就是说这个以这个点为根的子树就是上面所说的 ...

随机推荐

  1. Mysql学习总结(31)——MySql使用建议,尽量避免这些问题

    做服务器端开发的同学们,相信对于mysql应该是十分熟悉,但是一旦真正出现问题,你是否能够快速的发现问题的起因,并且解决呢?一旦问题涉及到数据库层面,往往不是那么好解决的,通常来说,我们需要提前做应对 ...

  2. CF16A Flag

    CF16A Flag 题意翻译 题目描述 根据一项新的ISO标准,每一个国家的国旗应该是一个n×m的格子场,其中每个格子最多有10种不同的颜色.并且国旗应该有条纹:旗帜的每一行应包含相同颜色的方块,相 ...

  3. MySQL高可用系列之MHA(二)

    一.參数说明 MHA提供了一系列配置參数.深入理解每一个參数的详细含义,对优化配置.合理使用MHA非常重要.非常多高可用性也都是通过合理配置一些參数而实现的. MHA包含例如以下配置參数,分别说明例如 ...

  4. [Angular] Read Custom HTTP Headers Sent by the Server in Angular

    By default the response body doesn’t contain all the data that might be needed in your app. Your ser ...

  5. 在MAC下怎样用SSH连接远程LINUXserver

    首页,打开MAC的命令终端,检查是不是用root用的登录的,假设不是的话请输入命令:sudo -i切换到root. 然后,输入:ssh ip地址,假设主机存在的话会提示你输入password,输入正确 ...

  6. 从头认识java-15.3 使用HashSet须要注意的地方

    这一章节我们来讨论一下使用Set的各种实现须要注意的地方. Set接口的经常使用实现类有:HashSet.TreeSet,LinkedHashSet 1.HashSet 大家对于HashSet的印象都 ...

  7. Android开发之AudioManager(音频管理器)具体解释

    AudioManager简单介绍: AudioManager类提供了訪问音量和振铃器mode控制. 使用Context.getSystemService(Context.AUDIO_SERVICE)来 ...

  8. [linux]shell中,反引號(`)的应用

    反引號位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引號(')位于Enter键的左方的差别. 反引號位 (`)在Linux中起着命令替换的作用. 命令替换是指shell可以将一个命令的标准 ...

  9. bzoj4868: [Shoi2017]期末考试(三分法)

    4868: [Shoi2017]期末考试 题目:传送门 题解: Get到一个新姿势...三分法 一开始百度百科的时候下了一跳...中国...的根??? 学懂了之后其实运用起来就根二分差不多啊,不过证明 ...

  10. C#post调用接口并上传文件

    /// <summary> /// C#调用接口上传json数据,并且带文件上传 /// </summary> /// <param name="url&quo ...