2017.10.28 Tarjan求无向图必经点 解题报告

BZOJ 2815 浅谈有向图必经点问题总结+拓扑序+倍增LCA灭绝树求法 世界真的很大 昨天算是感觉到了真的有人这么无聊 就是有这种人,也管不得了,还是收起心情才是 必经点问题在考试中也算是出现过好几次了,之前都用了其他的蜜汁方法水过去,昨天终究还是用了什么灭绝树 感觉还是要总结一下必经点这么一个东西了 当然听说支配树是可以完全搞定所有问题的,不过常数较大罢了,这个就不讨论了看题先:description: http://www.lydsy.com/Judg 阅读详情

【题目描述】

给出一个无向图,求从1号点到n号点的必经点

【输入】

第一行 一个整数 一个整数 T,表示共 T组数据 。
对于每组数据,第一行两个n,m表示有n个点,m条边。
接下来m行,两个正整数 u,v,表示u和v个建筑物之间相连。 建筑物之间相连。 建筑物之间相连。 建筑物之间相连。

【输出】

必经点个数和必经点编号

【解题报告】

一开始以为是支配树什么的,看了题解才发现Tarjan也可以做,不禁感慨自己实在是太弱了。
这里写图片描述

代码如下:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 200010

int t,n,m,cnt,head[N];
struct Edge{int to,nxt;}e[N<<2];
int cut[N],sonn[N],vis[N],tot,idc;
int dfn[N],low[N];

void init()
{
    cnt=-1;tot=idc=0;
    memset(head,-1,sizeof(head));
    memset(sonn,0,sizeof(sonn));
    memset(cut,0,sizeof(cut));
    memset(vis,0,sizeof(vis));
    memset(dfn,0,sizeof(dfn));
    memset(low,0,sizeof(low));
}
void adde(int u,int v)
{
    e[++cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt;
    e[++cnt].to=u;e[cnt].nxt=head[v];head[v]=cnt;
}
void dfs(int u,int fa)
{
    vis[u]=1;if(u==n) sonn[u]=1;
    bool flag=0;
    low[u]=dfn[u]=++idc;
    for(int i=head[u];~i;i=e[i].nxt)
    {
        int v=e[i].to;
        if(v==fa) continue;
        if(!vis[v])
        {
            dfs(v,u);
            low[u]=min(low[u],low[v]);
            sonn[u]|=sonn[v];
            if(sonn[v]&&low[v]>=dfn[u]) flag=1;
        }
        else low[u]=min(low[u],dfn[v]);
    }
    if(u!=1&&flag) cut[u]=1,tot++;
}
int main()
{
    freopen("home.in","r",stdin);
    freopen("home.out","w",stdout);
    for(scanf("%d",&t);t;--t)
    {
        init();
        scanf("%d%d",&n,&m);
        for(int i=1;i<=m;++i)
        {
            int u,v;scanf("%d%d",&u,&v);
            adde(u,v);
        }
        dfs(1,1);
        printf("%d\n",tot);
        for(int i=1;i<=n;++i) if(cut[i]) printf("%d ",i);
        puts("");
    }
    return 0;
}
0x66.图论 - Tarjan算法与无向图连通性 目录一、无向图的割点与桥割点桥/割边时间戳搜索树追溯值 声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分内容由我个人编写而成,如果想要有更好的学习体验或者希望学习到更全面的 阅读详情

相关推荐

蓝桥杯国赛题解:从危险系数到图的割点与必经点算法

在图论中,割点(或称关节点)是指删除后会使图连通分量增加的顶点,它是衡量网络鲁棒性的关键概念。其原理基于深度优先搜索(DFS)生成的DFS树,通过计算每个顶点的dfn(发现时间)和low(可回溯最早祖先)值,利用Tarjan算法可在O(V+E)时间内高效识别割点。这一技术价值在于能快速定位网络中的脆弱环节,广泛应用于通信网络可靠性分析、社交网络关键人物识别、交通枢纽规划等场景。本文以蓝桥杯经典题目“危险系数”为例,深入探讨了在特定起点终点对之间寻找必经点(即局部割点)的问题,对比了朴素DFS枚举与基于Tar

weixin_33417488的博客 294

Tarjan求无向图必经点 笔记

由于本人没找到题目,所以只能算是 “笔记” 了。 前置知识: Tarjan\texttt{Tarjan}Tarjan求割点 简要题意: 给定一个无向图,求从 111 到 nnn 的必经点。 首先,111 到 nnn 的必经点肯定都是割点,因为去掉它们如果还能连通,那它们就不是必经的。 但是,割点并不一定是 111 到 nnn 的必经点 ,因为很可能割掉这个点并不影响从 111 到 nnn 的路径。...

bifanwen的博客 581

网络处理器

网络处理器

【DAG】寻找桥边、必经点(支配树)

在许多题目中,常常都需要一下操作:给出S、T,找一个桥边(必经点) Solution1 先从S走到T,记录下路径(包括点和边),并且标记一下, 再从S开始走,不过这回不走上面标记过的边(不是点), 走完以后,所有访问过的点会与上面标记的路径上的点有部分重合, 我们发现,重合的点中,最右边的(也就是路径中靠后的)设为X,那么,S~X这条路径上的边都不是桥边,反而,在标记的路径上,X的出

1858

台湾捷克论坛最新IP

台湾捷克论坛最新IP获取工具,好东西。

【Python・统计学】(两)多因素方差分析(原理及代码)

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】

TUTO_TUTO的博客 4864

【蓝桥杯】tarjan算法

Tarjan 算法是的算法,用于问题。

Hsianus的博客 1337

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3913

无向图必经点、必经边的相关问题

目录 无向图必经点、必经边的相关问题 一、 任意两点间路径的必经边 二、 任意两点间路径的必经点 三、 任意两边间路径的必经点 四、 任意两边间路径的必经边 五、声明: 无向图必经点、必经边的相关问题 一、 ...

weixin_30448685的博客 1462

FreeRTOS OTA实战:从Bootloader设计到安全升级的完整流程(附MQTT示例代码)

本文详细介绍了在FreeRTOS系统中实现安全OTA固件升级的完整流程。内容涵盖从Bootloader设计、存储分区规划到与MQTT协议集成的OTA Agent任务开发,并重点解析了固件签名验证、防回滚等关键安全机制,为嵌入式物联网设备提供了一套高可靠性的远程升级解决方案。

weixin_29248653的博客 159

告别概念晕眩:用TC3xx SMU和TLF35584的配置实例,搞懂ASIL D功能安全落地

本文通过英飞凌TC3xx系列MCU的SMU模块与TLF35584电源管理芯片的协同配置实例,详细解析了如何实现符合ASIL D功能安全标准的刹车辅助ECU。文章涵盖SMU报警源配置、响应动作类型、TLF35584的安全状态管理,以及构建完整安全闭环的实践方法,帮助工程师将抽象的安全概念落地为具体设计方案。

weixin_30647065的博客 436

tarjan无向图缩点

int root=1; int belong[MAXN],tot; int dfn[MAXN],low[MAXN],num; int stack[MAXN],top; bool instack[MAXN]; void tarjan(int u,int fa){ dfn[u]=low[u]=++num; stack[++top]=u; instack[u]=tru...

weixin_30312563的博客 641

基于自适应小波阈值算法的图像去噪

自适应小波阈值算法是一种基于小波变换的方法,它相对于传统的小波阈值去噪方法具有更好的性能和鲁棒性。该算法首先对图像进行小波变换,然后根据小波系数的大小确定一个自适应的阈值,将小波系数与阈值进行比较,大于阈值的系数被保留,小于阈值的系数被置零。在上述代码中,首先选取了小波函数sym4进行小波分解,然后根据标准差计算出阈值,使用wthresh函数进行阈值处理,最后进行反变换得到处理后的图像。该GUI界面与前面的自适应小波阈值算法代码结合,实现了图像的去噪,并提供了可视化的效果。

与其临渊羡鱼,不如退而结网 558

tarjan求边双 点双

定义: 对于两个点u和v,无论删去哪条边,它们仍然是联通的,那么uv就是边双连通。uv间不存在割边。一个点只属于一个边双,一条边也只属于一个边双。边双具有传递性,即 若uv边双联通,vz边双联通,那么uz边双联通。简易证明:uv间不存在割边,vz间不存在割边 ,则uz间也不存在割边,得证。

2201_75771132的博客 916

【YOLOv12改进trick】高效多尺度卷积注意力EMCAD_Block模块引入YOLOv12,实现涨点和效率提升,含创新点Python代码

EMCAD引入YOLOv12模块,实现高效多尺度注意力模块引入到YOLOv12中的快速涨点及效率提升

向上生长的程序媛的博客 851

c语言实现求一个矩阵特征值和特征向量

前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大...

qq_36417014的博客 2万+

poj1523—SPF(tarjan算法求无向图中所有的割点)

题目链接:传送门 SPF Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9167   Accepted: 4152 Description Consider the two networks shown below. Assuming that da

zhiyuanjiang的博客 473

抓包网络调试工具 reqable抓包教程

如果CA根证书未安装成功,网络图标是黄色,点击盾牌图标可以进入CA根证书安装界面,详细步骤请阅读。在API调试中,获取流量是第一步也是最基本的操作,这里讲解下如何使用Reqable获取流量,通俗地讲就是抓包。我们可以选择一个图片请求,双击打开详情面板,能够看到该请求的详细信息。如果系统代理未设置,网络图标是黄色,点击网络图标可以自动设置系统代理。此域名的结构树,可以查看该域名下所有请求的目录结构,点击选择可以查看该请求的详情。首先,需要启用Reqable的调试功能,点击最右上角的。打开浏览器,输入地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2556

jzoj3896-战争游戏【tarjan,割点,点双联通分量】

正题 题目大意 求每个点是多少个点对之间路径的必经点。 解题思路 首先若一个点是在点不是割点,那么答案就是n−1n-1n−1,因为这个点不是除了它自己以为任何点对的必经点。 之后我们记录每个点双的大小。对于一个割点,是两种路径的必经点。 从外连入内 这个点连接的点双之间互相到达 分开计算就好了。 codecodecode #include&amp;lt;cstdio&amp;gt; #include&amp;l...

QuantAsk 506

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

POJ1523_SPF_求割点与分块_tarjan算法

题意: 给一个无向图,求其中的割点,并求当此割点删掉后图中形成多少个连通分量 题解: 用tarjan求割点:伪代码 求割点的方法就用上面的,d[u]和low[u]的含义是: d[u],dfs到结点u时的时间 low[u],由u在搜索树中的子节点通过非父子边可以追溯到的最早的结点开始的时间 时间:每调用一次dfs函数,时间增加1 原理我就不啰嗦了,看看tarjan算法的证明和实现

u011343989的专栏 900

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdoj 4738 tarjan求无向图的桥

hdoj 4738 题意:有n个点m条边,问如果删掉一条边使图不连通,问最少需要多少兵力。每条边都有驻守的士兵,如果想删掉这条边至少要派相同人数的士兵。 思路:就是一个连通图求最小权的桥的问题。 桥的概念:无向连通图中,删掉某条边可以使原图不连通,那么该边就是无向图的桥。 tarjan算法求桥的思想简单说一下:以任意一点开始建立搜索树,记录每个点的搜索深度dep和非父子边能到达的最早节点深

AngelBeats! 591

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ1144 Network (Tarjan算法求无向图的割点)

Network Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 15194 Accepted: 6906 Description A Telephone Line Company (TLC) is establishing a new telephone cable network. They a...

爱玲姐姐的博客 789

hdu 2460 Network Tarjan缩点+LCA 解题报告

A network administrator manages a large network.

Hawo11的博客 478

poj3694+hdu2460 求桥+缩点+LCA/tarjan

这个题使我更深理解了TARJAN算法,题意:无向图,每添加一条边后文桥的数量,三种解法:(按时间顺序),1,暴力,每每求桥,听说这样能过,我没过,用的hash判重,这次有俩个参数(n->10w,开不了二维的),怎么判?联系2个参数,我想到了用一个函数,像散列一样,定义关系,我随便写了一个hash[x+y+x/y+y/x+x%y+y%x+x|y],一直WA,虽然未过,但是想到了这个,以后2个参数判重

天羽屠龙舞 915

Tarjan算法与无向图连通性

无向图的割点与桥 在看Tarjan算法之前先看以下概念: 给定无向图连通图G=(V,E)。 若对于 x∈V ,从图中删除节点x以及与x关联的所有边之后,G 分裂为两个或者以上的连通块,则称节点 x 为无向连通图 G 的割点。 若对于 e∈E ,删除边 e 之后,G 分裂为两个不相连的子图,则称 e 为 G 的桥或割边。 Tarjan算法能够在线性的时间内求出无向图的割点和桥。 时间戳 在图的dfs过程中,按照每个节点被第一次访问的时间顺序,一次给 N 个节点 1~N 的整数标记,这个标记就是时间戳,节点 x

weixin_45800628的博客 543
上一篇: 2017.10.27 数学期望(手把手教你推期望) 解题报告
下一篇: BZOJ 4102 [Usaco2015 Open] 图上DP 解题报告
onepointo
博客等级 码龄10年 39粉丝 276原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值