割点和桥的数量

快乐地打牢基础(5)——割点和桥 一、定义 点连通度: 边连通度: 阅读详情

题目描述
给定无向图G,请求出G 中的割点和桥的个数。

输入
第一行两个整数n,m,代表图的顶点数和边数。
接下来m 行,每行两个整数u, v,描述一条无向边。

输出
输出两个整数,先输出割点的数量和再输出桥的数量,用一个空格隔开。

样例输入
4 5
1 2
1 2
2 3
2 3
3 4
样例输出
2 1

提示
20% n<=50
50% n<=500
100% n<=50000, m<=200000

这题还真是赤裸裸哈。。。
考试的时候还推了一下,其实桥和割点的关键就在于
low[to[i]]>dfn[k]和low[to[i]]>=dfn[k]
还有dfs树中根节点是否为割点的特判

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m,tot,x,y,ty,root,cutid,cutedge;
int dfn[50005],low[50005],cut[50005],instack[50005];
int head[50005],Next[400005],to[400005];
void tarjan(int k,int pre)
{
    dfn[k]=low[k]=++ty;
    instack[k]=1;
    int ok=0,son=0;
    for(int i=head[k];i!=-1;i=Next[i]) 
    {
        if(to[i]==pre&&ok==0) 
        {
            ok=1;
            continue;
        }
        if(dfn[to[i]]==0) 
        {
            son++;
            tarjan(to[i],k);
            if(low[to[i]]>dfn[k]) cutedge++; //桥 
            if(low[to[i]]>=dfn[k]) cut[k]=1; //是不是割点 
            low[k]=min(low[k],low[to[i]]);
        }
        else
        if(instack[to[i]]) low[k]=min(low[k],dfn[to[i]]);
    }
    if(k==root)  //根要特判 
    {
        if(son>1) cut[k]=1; else cut[k]=0;
    }
    instack[k]=0;
}
void add(int x,int y)
{
    tot++;
    Next[tot]=head[x];
    to[tot]=y;
    head[x]=tot;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) head[i]=-1;
    for(int i=1;i<=m;i++) 
    {
        scanf("%d%d",&x,&y);
        add(x,y);
        add(y,x);
    }
    for(int i=1;i<=n;i++) 
    if(dfn[i]==0) 
    {
        root=i;
        tarjan(i,-1);
    }
    for(int i=1;i<=n;i++) 
    if(cut[i]) cutid++;
    cout<<cutid<<' '<<cutedge<<endl;
    return 0;
}
用deepseek部署全自动的机器人--bytebot Bytebot是一款开源AI桌面代理,提供完整的虚拟桌面环境,支持跨应用任务处理、文件管理、文档处理等复杂工作流。其技术架构包含核心控制、LLM代理、UI等组件,支持Docker和Kubernetes部署。本文演示了基于CloudStudio的部署流程,包括环境配置、Docker部署及DeepSeek API集成,实现多模型调用功能。 阅读详情

相关推荐

手把手教你用FreeModbus RTU协议栈实现STM32与PLC通信(附Keil工程)

本文详细介绍了如何使用FreeModbus RTU协议栈在STM32上实现与PLC的工业通信。从环境搭建、工程配置到关键移植接口实现,提供了Keil工程模板和调试技巧,帮助开发者快速掌握Modbus RTU通信技术,适用于工业自动化领域的设备间通信需求。

weixin_42549037的博客 419

图论 —— 图的连通性 —— Tarjan 求割点与桥

【概念】 1.割点 1)割点:删除某点后,整个图变为不连通的两个部分的点 2)割点集合:在一个无向图中删除该集合中的所有点,能使原图变成互不相连的连通块的点的集合 3)点连通度:最小割点集合点数 如上图,若去掉 0,则图被分成 12和 34 两个连通分量;若去掉 3,则图被分成 012 和 4 两个连通分量。 故:0、3 是割点,两者是一个割点集,点连通度是 2 2.桥 1)...

Alex_McAvoy的博客 1949

揭秘无人机前沿领域的科技新突破

本文旨在系统性地介绍无人机技术在前沿领域的最新突破,涵盖从基础理论到实际应用的各个方面。我们将重点关注那些正在改变无人机行业面貌的关键技术创新,并分析它们对未来发展的影响。文章首先介绍无人机技术的基础概念和背景,然后深入探讨六个关键领域的技术突破,接着分析实际应用案例,最后展望未来发展趋势。自主导航系统(SLAM):同时定位与地图构建技术,使无人机能在未知环境中自主导航计算机视觉(CV):使无人机能够"看"和理解周围环境的技术5G通信:第五代移动通信技术,提供高速、低延迟的数据传输能源管理。

AI天才研究院 1490

无向图的割点与桥

定义 割点:给定一无向连通图,对于其中一点 uuu,若从图中删掉 uuu 和所有与 $u 相连的边后,原图分裂成成 222 个或以上不相连的子图,则称 uuu 为原图的割点(或割顶)。 割边:给定一无向连通图,对于其中一边 (u,v)(u,v)(u,v),若从图中删掉 (u,v)(u,v)(u,v) 后,原图分裂成 222 个或以上不相连的子图,则称 (u,v)(u,v)(u,v) 为原图的割边(或桥)。 TarjanTarjanTarjan 算法可以在 O(n)O(n)O(n) 内求出所有割点与割边。 割

orz 309

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

遥感卫星影像AI数据集格式规范详解、技术原理与数据生产全流程技术手册

本技术手册旨在系统性地梳理遥感卫星影像AI数据集的各类格式标准(涵盖VOC、COCO、YOLO及遥感专用DOTA格式等),深入剖析其背后的技术原理,并详细阐述数据生产的全过程,涵盖预处理、标注、质量控制及数据增强等关键环节。无论您是刚入门的算法工程师,还是资深的数据生产管理者,本手册都将为您提供详实的参考与指引。

panshengwu的博客 1129

求解无向图的割点和桥

无向图的割点和桥 割点和桥的概念: 对于无向图G,如果删除某个点u后,连通分量数目增加(本来为一个连通集,现在变为多个),称u为图的割点。对于连通图,割点就是删除之后不再连通的点。当然了,桥也同理,只不过桥是边,也称为割边,如果删掉(u,v)之后连通分量数目增加,那么我们称(u,v)这条边为桥(割边)。 求割点和桥的方法: ①很容易想到的,暴力每个结点,然后用DFS判断连通分量是否增加,时

蒻菜_羊羊羊的专栏 938

第一章、isaacsim 及 isaaclab 安装教程

本专栏所有内容将根据上述资源地址展开,请结合食用~

m0_47719040的博客 4782

10.2清北刷题记

10.2 Morning Problem A. distance 【题目描述】 有一个n个点m条边的无权无向联通图,满足图中不存在长度大于等于3的环,并且图中没有重边和自环。 定义两个点u,v的距离d(u,v)为这两个点之间最短路上的点数,求 min{max d(u,v)} 【输入描述】 第一行两个数n,m,表示图的点数和边数 接下来m行,每行两个正...

qq_33241119的博客 470

Logisim实战:手把手教你设计硬布线版MIPS CPU(多周期/8指令/附电路图)

本文是一份详细的Logisim实战指南,手把手教你设计一个采用硬布线控制的多周期MIPS CPU。文章深入剖析了硬布线控制与微程序控制的核心理念差异,并逐步讲解了从定义执行状态、构建状态跳转逻辑到生成控制信号、集成测试的完整流程,最终实现一个支持8条指令、可运行简单程序的处理器模型。

g9h0i1的博客 592

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

割点割边判定 法则

割边判定法则; 无向边(u,v)(u,v)(u,v)是桥,当且仅当搜索树上存在uuu的一个子节点vvv满足:dfn[u]<low[v]。 如何理解这个式子: 桥是什么,桥是两个单独岛屿的桥。 什么是单独的岛屿,还记得桃花源记里面的世外桃源吗。 什么是世外桃源,就是与外人间隔。 再者,什么是追溯值,就是一个节点可以在自己子树和子树可以拓展的节点中找到一个最小的编号。 删掉了桥,那么在世外桃源...

nuoyanli的博客 4147

vue3 - element-plus表格组件el-table实现鼠标拖曳排序功能,vue3 Table表格拖拽排序,表格每行使用鼠标拖动进行排序功能,表格拖拽排序实现(详细示例代码,一键复制开箱即用

vue3,elementPlus,el-table,typescript,表格组件,Table表格,表格拖动排序,表格拖曳排序,鼠标拖拽表格进行排序功能,elementplus表格如何实现拖动每行进行排序操作,表格拖动改变顺序,鼠标拖曳,表格内的数据项拖拽排序,vue3如何实现element-Plus表格组件进行表格内的数据项拖拽排序,列表拖拽排序效果,实现table动态拖拽,鼠标拖着排序,vue3 element Plus 表格拖曳拖动拖拽 排序,el-table拖拽排序实现,表格内容拖拽重新排序,树形表

✅ 精选推荐文章 1万+

tarjan求桥及割点

/* 求割点,去掉割点连通块的个数 求桥 */ const int maxV=10010,maxE=100010; struct Edge { int to,next; bool cut; }edge[maxE]; int Adj[maxV],Size; void init() { Size=0; memset(Adj,-1,sizeof(Adj)); }

码代码的猿猿 1615

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

割点与桥模板及讲解

割点:就是一张图中割掉这个点之后联通块个数增加的点 桥:也即割边,是一张图中割掉这条边之后联通块个数增加的边 求这个东西我们需要用到dfs序,以及low数组,其中low数组和tarjan求强连通分量里的low数组是一个意思,于是我们显然可以得出几个比较显然的结论 ①:low[v] > dfn[u] ->is a cut_line ②:low[v] ≥ dfn[u]->is a c

Monica 783

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ 1523 SPF 割点与桥的判断算法-Tarjan

题目链接: POJ1523 题意: 问一个连通的网络中有多少个关节点,这些关节点分别能把网络分成几部分 题解: Tarjan 算法模板题 顺序遍历整个图,可以得到一棵生成树: 树边:可理解为在DFS过程中访问未访问节点时所经过的边,也称为父子边 回边:可理解为在DFS过程中遇到已访问节点时所经过的边,也

旧时光 2546

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

求无向图的割点和桥

/** * 求 无向图的割点和桥 * 可以找出割点和桥,求删掉每个点后增加的连通块。 * 需要注意重边的处理,可以先用矩阵存,再转邻接表,或者进行判重 * 调用solve输出割点数,全局变量bridge记录边的个数 */ #include #include #include #include using namespace std; const int maxn=10010; co

ACM,再见! 2690

【题解】洛谷 P5489 EntropyIncreaser 与 动态图

显然,树上所有边都是桥;每次加边时,若出现环,则环上所有边都不是桥。于是开两棵 LCT 分别维护割点和桥即可。,如果出现环那么将这个环上所有边权变为。具体地,初始我们将所有边权赋值为。,查询操作即转化为求路径和。求割点部分放个本人的题解。动态求割点的板子题是。

星河依旧长明的博客 806

2023-04-02 桥和割点以及图的遍历树

对于无向图,如果删除了一个顶点(顶点邻边也删除),整个图的联通分量个数也变化,则这个点成为割点(Cut Points 或 Articulation Points)比如下图,删除定点3或5,图都会从1个联通分量变成2个联通分量。生活中比如连接两个班级的是班长,一个班长生病,两个班级就无法联谊了,即变成两个各自为战的群体了。

lsgwr的博客 943

无向图求割顶与桥

无向图求割顶与桥         对于无向图G,如果删除某个点u后,连通分量数目增加,称u为图的关节点或割顶。对于连通图,割顶就是删除之后使图不再连通的点。如果删除边(u,v)一条边,就可以让连通图变成不连通的,那么边(u,v)是桥。         具体的概念和定义比较多,在刘汝佳训练指南>>P312-314页都有详细的介绍。         下面来写求无向图割顶和桥的DFS函数.我们令p

code 2429

Tarjan模板题求割点,桥

UVA - 796 Critical Links Tarjan求割点个数 题目链接:Vjudge  题意: 给定N个顶点若干条边, 求割点个数。 思路:套用kuangbin大牛的 Tarjan 模板。 #include using namespace std; #define FIN freopen("input.txt","r",stdin) #define

Fighting! 1059

UVA315Network(求割点个数)

题目大意: 求无向图的割点。输入数据为n,下面n行数据,每行第一个数表示顶点u,然后是与它直接相连的顶点。 分析: 代码中求了无向图的割点和桥,以及删掉该割点后可以增加的联通块的个数。 需要注意重边的处理,可以先用矩阵存,再转邻接表,或者进行判重。 #include #include #include #include using namespace std; /* *

Rain 426

【模板】割点(割顶)

[Time Gate] https://www.luogu.org/problemnew/show/P3388 【解题思路】 对于根节点,判断是不是割点很简单——计算其子树数量,如果有2棵即以上的子树,就是割点。因为如果去掉这个点,这两棵子树就不能互相到达。 对于非根节点,判断是不是割点就有些麻烦了。我们维护两个数组dfn[]和low[],dfn[u]表示顶点u第几个被(首次)...

weixin_30341745的博客 84

无向图的割点、桥

#include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;cstring&gt; #include&lt;vector&gt; #include&lt;stack&gt; #include&lt;queue&gt; #define maxn 100005 using namespace std; int n,m,dfn[maxn],...

Freopen的博客 167

割点,桥,双连通分量Tarjan ,入门练习

POJ 2117 求在一个无向图中,删去一个点,图中最多的连通块有多少个。 因为是无向图,初识的连通块block在,dfs里面就可以找到,然后我们只要找到割点,记录增加的连通块数目,最后扫一遍 取最大值就好了! Wa的原因:初识化的ans 应该是初识连通块-1,我没读题,看样例做的,所以没怎么注意#include <cstdio> #include <cmath> #include <cstr

qq_24664053的博客 669

D、Router Mesh(tarjan求割点模板题)

#include<bits/stdc++.h> using namespace std; const int V=3e5+100; int dfn[V],low[V],parent[V]; bool vis[V]; vector<int> g[V]; int cnt; int n,m; int a[V]; void dfs(int u) { // 子树数量 int children = 0; // 默认low[u]等于dfn[u] dfn[u]=.

qq_44866969的博客 245
上一篇: 判断图的连通性
下一篇: 糖果
ACTY
博客等级 码龄12年 21粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值