割边
来源:互联网 发布:淘宝好友在哪里看 编辑:程序博客网 时间:2024/05/01 16:05
#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<algorithm>#include<queue>#include<vector>using namespace std;int num[200009],dfn[100009],nxt[200009],low[100009],head[100009],dfs_num=0,cnt=0,root;int n,m;bool flag[100009];void dfs(int cur,int father){ dfn[cur]=++dfs_num; low[cur]=dfs_num; for(int i=head[cur];i;i=nxt[i]) { int u=num[i]; if(!dfn[u]) { dfs(u,cur); low[cur]=min(low[u],low[cur]); if(low[u]>dfn[cur])//满足此条件就代表不能回到(不经过来的路)父亲节点,说明只有一条来的路径,那么这两个点之间就是一条割边 { printf("%d--%d\n",cur,u); } } else { if(u!=father) { low[cur]=min(low[cur],dfn[u]); } } }}int main(){ freopen("a.in","r",stdin); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); num[++cnt]=y; nxt[cnt]=head[x]; head[x]=cnt; num[++cnt]=x; nxt[cnt]=head[y]; head[y]=cnt; } for(int i=1;i<=n;i++) { if(!dfn[i]) { root=i; dfs(i,root); } } return 0;}
感谢《啊哈算法》!
0 0
- 割点、割边
- 割点、割边
- 割点 割边
- 割点、割边
- 割边
- 割边
- 割边
- 割点和割边
- 割点,割边模板
- 割点&割边模板
- 割点和割边
- 割点 割边 模板
- 割边与割点
- 割点与割边
- 割点、割边、双连通分支
- tarjan算法之 割边,割点
- 割点与割边问题
- 割点与割边练习
- 递推递归练习--L(马拦过河卒)
- 修改mysql数据库导入sql文件大小限制
- 杂务安排
- k-Factorization CF
- 手把手git教程(04)--远程仓库设置
- 割边
- 搜索旋转排序数组 II
- 浅谈Android多线程编程
- 关于Hibernate的几点回顾:get/load/SessionFactory/延迟加载
- 递推递归练习L
- 九度OJ 题目1083:特殊乘法
- 二分图最大匹配
- nginx 出现413 Request Entity Too Large
- first、follow、select集合求法及LL1文法判别