#include <bits/stdc++.h>
#define MAXN 10005
using namespace std;
struct Tarjan
{
struct edge
{
int u,v;
edge(int uu=0,int vv=0):u(uu),v(vv){}
bool operator ==(const edge &p)const
{
return (u==p.u&&v==p.v)||(v==p.u&&u==p.v);
}
};
int n; //点的个数
vector<int> e[MAXN]; //图
int DFN[MAXN],LOW[MAXN];
int index; //编号计数器
edge stk[MAXN]; //栈
int top;
vector<vector<edge> > Ans; //记录答案
bool iscut[MAXN]; //记录点是否为割点
void init(int N) //初始化
{
n=N;
Ans.clear();
for(int i=1;i<=n;i++)
e[i].clear();
top=0;
index=0;
memset(DFN,-1,sizeof(DFN));
memset(iscut,0,sizeof(iscut));
}
void AddEdge(int u,int v) //添加边
{
e[u].push_back(v);
e[v].push_back(u);
}
void DFS(int u,int prt) //从点u开始搜索
{
DFN[u]=LOW[u]=++index;
int child=0;
for(int i=0;i<e[u].size();i++)
{
int &v=e[u][i];
if(v==prt)continue;
if(DFN[v]!=-1&&DFN[v]>=DFN[u])continue;
stk[top++]=edge(u,v);
if(DFN[v]==-1)
{
child++;
DFS(v,u);
LOW[u]=min(LOW[u],LOW[v]);
if(LOW[v]>=DFN[u])
{
iscut[u]=true;
vector<edge> ans;
while(!(stk[top-1]==edge(u,v)))
{
ans.push_back(stk[top-1]);
top--;
}
ans.push_back(stk[top-1]);
top--;
Ans.push_back(ans);
}
}
else LOW[u]=min(LOW[u],DFN[v]);
}
if(prt==-1&&child==1)iscut[u]=false;
}
void Solve()
{
for(int i=1;i<=n;i++)
if(DFN[i]==-1)DFS(i,-1);
}
}T;
int main()
{
int n;
while(scanf("%d",&n)==1)
{
T.init(n);
int m;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
int u,v;
scanf("%d%d",&u,&v);
T.AddEdge(u,v);
}
T.Solve();
for(int i=0;i<T.Ans.size();i++)
{
for(int j=0;j<T.Ans[i].size();j++)
printf("(%d,%d) ",T.Ans[i][j].u,T.Ans[i][j].v);
printf("\n");
}
}
}
相关推荐
搞定汽车座椅电机EMC超标:一个PCB滤波板的实战设计与避坑心得
本文详细介绍了汽车座椅电机EMC超标问题的解决方案,通过PCB滤波板的实战设计,解决了传导发射测试超标问题。文章分享了在空间受限条件下的滤波电路架构设计、接地系统优化及迭代验证过程,为汽车直流电机的EMC整改提供了实用方法论。
点双连通分量&边双联通分量详解
文章目录点双连通分量前言概念性质找割点找点双附赠题表边双连通分量概念性质找割边找边双做法1做法2题表 点双连通分量 前言 由于点双和边双都是无向图里面的东西,所以下面的讲解都以图是无向图作为前提。 概念 割点: 对于一个连通图中的点 xxx,假如删去这个点以及与所有 xxx 相连的边之后图不连通,那么称 xxx 为该图的割点。 点双联通的: 对于一个无向图,假如仅仅对于该图而言其中不包含割点,那么............
Ubuntu22.04下ROS2与PX4仿真环境搭建全流程解析
本文详细解析了在Ubuntu22.04系统下搭建ROS2与PX4仿真环境的全流程,包括系统准备、ROS2 Humble安装、PX4飞控环境部署、ROS2与PX4通信桥梁搭建等关键步骤。针对常见问题提供了解决方案,并分享了性能优化和开发调试技巧,帮助开发者快速构建无人机仿真开发环境。
点双、边双、强联通分量整理
文章目录定义Tarjan算法割点和点双割边和边双强联通分量例题 定义 首先要明确各种定义,非常容易搞混: 时间戳:数组一般叫dfn[&amp;amp;amp;amp;amp;amp;ThickSpace;]dfn[\;]dfn[],记录点第一次入栈的顺序。 搜索树: 割点:去掉这个点,原无向联通图不再联通。割点集合同理。 割边/桥:去掉这条边,原无向联通图不再联通。 点双联通图:不存在割点的图。判定:顶点数不超过2的无向联通图是点双。...
第十九届全国大学生智能车竞赛越野信标 硬件篇
全国大学生智能汽车竞赛,越野信标组
迈创Cameralink采集卡与MIL软件集成开发实战指南
本文详细介绍了迈创Cameralink采集卡与MIL软件的集成开发实战指南,涵盖硬件安装、驱动配置、MIL软件深度设置及图像采集处理等关键步骤。特别适合工业视觉检测和医疗影像领域,通过优化配置和性能调优,实现高速稳定的图像处理。
关于割点和点双连通分量的两个性质
那么,每一个强连通分量必然由原图的若干点双连通分量(可能去除掉割点)组成(这里及以下的“组成”都可以有重复节点),因为每一个强连通分量必然由自己的若干点双连通分量组成,而这些点双连通分量如果不是原图的点双连通分量(可能去除掉割点),那么必然是有一部分在其它强连通分量,那就与前面的结论矛盾,因此不可能。因此,包含割点的点双连通分量数大于等于二。如果说这个点属于两个或更多点双连通分量,那么将包含它的几个点双连通分量组成一个整体,这个整体必然是一个更大大点双连通子图,就与“分量”(极大)的假设矛盾。
实验二 离散控制系统的性能分析(时域/频域)
1.掌握离散闭环系统的动态性能时域参数的分析与计算方法; 2.掌握离散系统稳定性的频域典型参数分析与计算方法。 MATLAB 软件( 2022a); 1.在 Matlab 语言平台上,通过给定的闭环离散系统,深刻理解时域参数的物理意义与计算方法,内容包括如下: 阻尼比参数分析:Z 平面与 S 平面的极点相互转换编程实现;分析 S/Z 两个平面域特殊特性(水平线、垂直线、斜线、圆周等)的极点轨迹相互映射方法;系统阶跃响应参数:上升时间和超调量等。 2. 采用频域分析方法,通过编程计算,进一步理解离散系统的稳定
求双连通分量
关于双连通分量的求法以及一些证明。如果文章有疏漏不周,请在评论区指出。
TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践
本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。
从 Integrated Configuration 到 Integration Flow,SAP PI/PO 老配置迁移的一次温和重构
很多还在运行 SAP PI/PO 的系统,Integration Directory 里都积累了不少 Integrated Configuration,也就是日常项目里常说的 ICO。它们可能稳定运行了多年,负责把采购订单、物料主数据、客户主数据、发票、发货通知从一个系统送到另一个系统。问题在于,ICO 这种对象很实用,却不够直观。
点双连通分量[模板]
#include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,m,cut[maxn]; struct edge{ int to,nxt; }d[maxn]; int head[maxn],cnt=1; void add(int u,int v){ d[++cnt]=(edge){v,head[u]},head[u]=cnt; } int low[maxn],dfn[maxn],stac[maxn],top
大数据知识面试题-Hadoop(2022版)
序列号 内容 链接 1 大数据知识面试题-通用(2022版) 待续… 2 大数据知识面试题-Hadoop(2022版) 待续… 3 大数据知识面试题-MapReduce和yarn(2022版) 待续… 4 大数据知识面试题-Zookeepr (2022版) 待续… 5 大数据知识面试题-Hive (2022版) 待续… 6 大数据知识面试题-Flume(2022版) 待续… 7 大数据知识面试题-Hbase(2022版) 待续… 8 大数据知识面试题-sqoop(....
无向图的点-双联通分量(模板)
求一个无向图的点双联通分量,大白书315页 性质:不同的点-双联通分量之间最多只有一个公共点,且它一定是割顶,反过来说任何割顶都至少是两个不同的点-双连通分量的公共点 模板 int n, m; int dfs_clock, bcc_cnt;//bcc_cnt记录点-双连通分量的个数,初始化是0但是是从1开始的 int pre[maxn], low[maxn], bccno[maxn];//b
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
大白书中无向图的点双联通分量(BCC)模板的分析与理解
对于一个无向图,如果任意两点至少存在两条点不重复(除起点和终点外无公共点)的路径,则这个图就是点双联通。 这个要求等价于任意两条边都存在于一个简单环(即同一个点不能在圈中出现两次)中,即内部无割点。 那么算法首先要求出割点。 从代码中可以看出:只要求出割点,就开始组一个bcc中。 如果割点两侧都不存在环的话会怎么处理呢? 代码中相邻的割点(或者是割点和根节点)也被当做一个bcc处理。 ...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
【图论算法及模版】割点,割边,强联通分量,点双联通分量,边双联通分量
[原]【图论算法及模版】割点,割边,强联通分量,点双联通分量,边双联通分量 2012-11-27阅读5372 评论0 将学的基础知识总结下 Orz LRJ 因为都是街货,为了防止大牛D,所以仅结合资料作简单总结 联通分量:u -> v, v -> u,相互可达的节点称为连通分量 求联通分量个数只需要DFS一遍即可,也可用并查集去判联通块
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
UVALive - 5135(点双联通分量模板)
题意:有m条隧道,这些隧道互相交汇(即没有度为0的情况)。现在要建立逃生竖井,使得某些地方塌陷时员工可以从竖井逃生,求最少要建多少逃生竖井,以及建竖井的方案数。思路:很容易联想到点联通分量的割点,但当割点塌陷时员工就无法逃脱了。所以不能在割点上建,而要在分量上建。当bcc==1时建连两个(以防其中一个塌陷了),方案数为n(n-1)/2。当bcc不等于1时,考虑在每一个分量上建,如果分量上有2个以及两
tarjan模板
仅供个人查看,无法验证其正确性 //************************************************************ void v_dcc_tarjan(int x) //无向图->点双联通分量(找割点) { low[x]=dfn[x]=++indx; int flag=0; for(Reg int i=fir[x];i...
(点双联通分量模板)POJ 2942 Knights of the Round Table 圆桌骑士
Knights of the Round TableTime Limit: 7000MS Memory Limit: 65536K DescriptionBeing a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress, and drinking wit
双联通分量---点双联通,边双联通 (模板)
转载自@vufw_795定义:对于一个连通图,如果任意两点至少存在两条点不重复路径,则称这个图为点双连通的(简称双连通);如果任意两点至少存在两条边不重复路径,则称该图为边双连通的。点双连通图的定义等价于任意两条边都同在一个简单环中,而边双连通图的定义等价于任意一条边至少在一个简单环中。对一个无向图,点双连通的极大子图称为点双连通分量(简称双连通分量),边双连通的极大子图称为边双连通分量。这篇博客就
双联通模板
点双联通模板—— hdu 3749 #define Troy 10/18/2017 #include <bits/stdc++.h> using namespace std; inline int read(void){ int s=0,k=1;char ch=getchar(); while(ch<'0'|ch>'9') ...
学习有向图和无向图的强连通分量(基本概念+割点+点双联通分量+桥+边双连通分量+全套模板【Tarjan】)
原理那么多,不如直接背代码来得实际
无向图的割点&&点双联通分量(Tarjan算法)总结
无向图的割点&&点双联通分量(Tarjan算法) 在一个无向图中,对于一个点对(u,v),如果从u至少有两条点不重复路径到达v,那么点u和点v在同一个点双联通分量中。而一个点双联通分量即为包含了尽可能多的这样的(u,v)点对的联通子图,且该分量中的任意两个点(u',v')均满足上述条件(除非这个双联通分量仅有这两个点--两个点也是双联通的)。 割点定义:在一个联通图中,若删除某个点可以使得该图不再联通,则该点为一个割点(故一个双联通分量中不存在割点)。一个割点可能属于多个不同的双联通分量,除割点外的外只会
SP2878 KNIGHTS - Knights of the Round Table(点双联通分量+奇环判断模板题)
传送门 题目描述 Being a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress, and drinking with the other knights are fun things to do. Therefore, it is not very surprising that in recent years the kingdom of King Arthur ha
无向图的边双联通分量,点双联通分量
边双联通分量 POJ3352 参考博客http://blog.youkuaiyun.com/lyy289065406/article/details/6762370 直接套用了求割边的模板,所有low值相同的节点都在一个双联通分量里,将双联通分量缩点, 问题再次被转化为至少在缩点树上增加多少条树边,使得这棵树变为一个双连通图”。 首先知道一条等式: 若要使得任意一棵树,在增加若干条边后,变
图连通性【tarjan点双连通分量、边双联通分量】【无向图】
根据 李煜东大牛:图连通性若干拓展问题探讨 ppt学习。 有割点不一定有割边,有割边不一定有割点。 理解low[u]的定义很重要。 1.无向图求割点、点双联通分量: 如果对一条边(x,y),如果low[y]>=dfn[x],表示搜索树中y为根的子树必须要通过x才能到达树的上端,则x必为割点。 x属于多个点双联通分量,所以出栈的时候保留x(所以栈出到y就好!否...
378



被折叠的 条评论
为什么被折叠?



