POJ 3694 Tarjan+LCA

【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化) 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中“桥”的数量。N≤105,M≤2∗105,Q≤1000N≤10^5,M≤2*10^5,Q≤1000N≤105,M≤2∗105,Q≤1000。 首先运行一次tarjan,求出桥和缩点,那么无向图缩点为一棵树,树边正好是原来的桥。每次操作连接两点,看看这两点是不是在同一个缩点内,如果是,那么缩点后的树没任何变化,如果两点属于不同的缩点,那么连接起来,然后找这两个缩点的LCA,,因为从点u到LCA再到点v再到点u,将形成 阅读详情

一个无向图 求每增加一条边后 图的割边的个数

#include<algorithm>
#include<cstring>
#include<cstdio>
#include<vector>
using namespace std;

const int maxn=100007;
vector<int> vt[maxn];
int dfn[maxn],low[maxn];
int vis[maxn],father[maxn];
int sum,cnt;
bool bridge[maxn];

void tarjan(int u)
{
	dfn[u]=low[u]=++cnt;
	vis[u]++;
	int i,v;
	for(i=0;i<vt[u].size();i++)
	{
		v=vt[u][i];
		if(!vis[v])
		{
			father[v]=u;
			tarjan(v);
			low[u]=min(low[v],low[u]);
			if(low[v]>dfn[u])
			{
				sum++;
				bridge[v]=true;
			}
		}
		else if(vis[v]==1&&father[u]!=v)
		{
			low[u]=min(low[u],dfn[v]);
		}
	}
	vis[u]++;
}

void deledge(int u)
{
	if(bridge[u])
	{
		bridge[u]=false;
		sum--;
	}
}

void lca(int u,int v)
{
	while(dfn[u]>dfn[v])
	{
		deledge(u);
		u=father[u];
	}
	while(dfn[v]>dfn[u])
	{
		deledge(v);
		v=father[v];
	}
	while(u!=v)
	{
		deledge(u);
		u=father[u];

		deledge(v);
		v=father[v];
	}
}

int main()
{
	int n,m,id=0;
	while(~scanf("%d%d",&n,&m))
	{
		if(n==0&&m==0)
		{
			break;
		}
		if(id)
		{
			puts("");
		}
		int i,j,u,v;
		for(i=1;i<=n;i++)
		{
			vt[i].clear();
		}
		for(i=0;i<m;i++)
		{
			scanf("%d%d",&u,&v);
			vt[u].push_back(v);
			vt[v].push_back(u);
		}
		memset(vis,0,sizeof(vis));
		memset(bridge,0,sizeof(bridge));
		sum=cnt=0;
		for(i=1;i<=n;i++)
		{
			if(!vis[i])
			{
				tarjan(i);
			}
		}

		int q;
		scanf("%d",&q);
		printf("Case %d:\n",++id);
		while(q--)
		{
			scanf("%d%d",&u,&v);
			lca(u,v);
			printf("%d\n",sum);
		}
	}
	return 0;
}



别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码) 本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。 阅读详情

相关推荐

台达PLC使用RS485Modbus指令通信

台达PLC,RS485,Modbus RTU,从站梯形图,0X01,0X02,0X05,CRC校验

lilililimu的博客 1万+

POJ 3694 Network(Tarjan求割边+LCA)

题目源: POJ3694 Network 题意:给你一个图,有Q个操作,每个操作将点u和v之间连一条边,问你在每次加边之后图中的割边的数量。 分析:首先用Tarjan在加边前求一次割边的数量,并用并查集缩点,缩点之后的图将会变成一棵树。加边时,任意两点之间直接暴力求LCA,在求LCA的过程更新割边的数量。因为一棵树加上一条边之后必定有环,那么就割边的数量就会减少。具体实现看代码。

Revincent的博客 464

【Unity3D】关于unity中spriteAtlas的打包方案及使用时内存状态的多组对照实验

unity项目中使用精灵(Sprite)为了降低性能消耗,我们可以使用精灵图集(Sprite Atlas)技术,它能够将多个纹理合并成一个大纹理

云渊寒烬 5101

蓝书(算法竞赛进阶指南)刷题记录——POJ3694 Network(并查集+LCA+tarjan求边双)

题目:POI3694. 题目大意:给出一张图,然后给出QQQ组连接操作,输出每一次操作后的割边(桥)数量. 注:这道题给出的图是连通图. 首先这道题可以先用tarjan缩点,我们可以得出一棵树,这棵树上的每一条边都是割边. 之后每一次加边,若加入的边在一个点内,则直接跳过. 否则我们设这条边的两个顶点所在的树上节点为uuu和vvv,我们发现uuu到vvv路径上的所有边都不再是割边,所以我们将所有在...

hzk_cpp的博客 341

ETL基础概念及要求详解

ETL即Extract(抽取)Transform(转换)Load(装载)的过程,如下图,同时也包括数据清洗的部分,是数据从源端到目标端的一个数据处理的过程,是构建数据仓库的重要一环,但不局限于构建数据仓库其他BI(商业智能)的设计和开发数据分析平台也经常用到ETL。

qq_43605229的博客 8947

软件工程案例教程·韩万江【课后习题】

!!!!

weixin_57858263的博客 6421

Tarjan+LCA POJ 3694 Network

链接: http://poj.org/problem?id=3694 给定一无向图,保证是连通的, 之后 逐渐加边,求每次加边后的,图的桥的数目。 由于 数据比较大,要用到LCA + 缩点。 值得学习的 也是 这两点, 求树种两点的 最短路径数,也是这么求。 先Tarjan一下, 求得割边,同时 缩点, 成为一棵树, 树上的边都是 桥,之后添边,两点 有同一个 parent 则 不减少桥的数

Napoleon 997

FPGA时序分析中的工艺角:从PVT原理到建立保持时间验证

在数字电路设计中,静态时序分析(STA)是确保芯片功能正确和性能达标的核心验证手段。其基本原理是通过计算信号在逻辑路径上的传播延迟,检查建立时间和保持时间是否满足寄存器采样要求。这项技术的核心价值在于,它能在芯片制造前就预测并消除时序违规,极大提高设计成功率。然而,实际芯片性能会受到工艺波动、电压变化和温度漂移(合称PVT)的显著影响。为了覆盖这些不确定性,时序分析必须采用基于工艺角的边界模型——用最慢的工艺角模型验证建立时间,用最快的工艺角模型验证保持时间。这种分析方法广泛应用于FPGA和ASIC设计流程

weixin_30181209的博客 199

POJ 3694 Network (tarjan + LCA)

题目链接:http://poj.org/problem?id=3694 题意是给你一个无向图n个点,m条边,将m条边连接起来之后形成一个图,有Q个询问,问将u和v连接起来后图中还有多少个桥。 首先用tarjan标记点的low和dfn值,那么u和v相连的边是桥的条件是dfn[u] < low[v](说明v与u不在一个连通分量里面,v无法通过回溯到达u点,画个图模拟会清楚)。那么bridge...

weixin_30659829的博客 71

R语言maftools包实战:5分钟搞定TCGA癌症突变数据可视化(附完整代码)

本文详细介绍了如何使用R语言的maftools包快速解析和可视化TCGA癌症突变数据。通过实战演示,从环境搭建、数据导入到核心可视化(如瀑布图、棒棒糖图)和深度统计分析(如生存分析、突变特征),帮助生物信息学研究者高效完成癌症基因组学分析,大幅提升从原始MAF数据到发表级图表的效率。

weixin_29054399的博客 189

NIDS——suricata(一)

NIDS——suricata环境安装和规则编写

weixin_58666006的博客 1273

POJ 3694 tarjan 桥+lca

Network Time Limit:5000MS Memory Limit:65536K Total Submissions:7298 Accepted:2651 Description A network administrator manages a large network. The network c...

acy4225的博客 294

HCIE-Datacom笔试题库

关于HCIE Datacom笔试考试题目整理!

坏坏-5的博客 614

poj 3694 Network(tarjan + LCA)

http://poj.org/problem?id=3694 题意:对于一个无向连通图,问加入某条边后,图中有桥的数目。 思路: 根据tarjan算法求出初始图的桥的数目,并用数组bridge标记桥的终点,在tarjan深搜树中求出每个节点的父节点(数组father表示)以及它们的深度,用于以后迭代求LCA。 因为加入某条边后,树中就会存在环,而环中的每条边都不再是桥,这就与求LCA有关了

1204

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【tarjan双连通+LCA求割边数】POJ 3694

http://poj.org/problem?id=3694 08年的合肥赛区网络赛,这里求u,v的LCA只是常数时间复杂度 #define N 100010 struct edge{ int v; int next; }e[N*10]; int ecnt; int head[N]; void init(){ ecnt = 0; memset(head,-1,s

leolin_的专栏 1129

ssm框架搭建

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

【LCA+Tarjan】POJ - 3694 - Network

题目链接&lt;http://poj.org/problem?id=3694&gt; 题意: 有一张无向图,在其中添边。问每次添边之后,还剩多少桥。 题解: 一开始我想首先Tarjan缩点,然后就形成了一棵树。每次添加一条边,就在树上形成了一个环,而这个环就是原来树上两点的路径,所以可以用LCA。然后对于树上形成了一个环的点再用并查集进行维护。对于答案的更新操作就是判断边上两点的并查集是否...

Eliot的博客 399

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ 3694 network LCA +tarjan求桥

题目链接(You can click it.) 题目含义: 有一张无向图,在其中添边。问每次添边之后,还剩多少桥。 思路: 首先,这个题解法不知这一种,这个简单一点,后续会补上其余的几个大同小异的解法(好题值得反复写)。 既然是求桥的数量,肯定离不开求桥了,求桥的数量可以在tarjan的过程中每遇到一个满足桥的判定式dfn < low,就ans++,最后ans就是初始桥的数量。或者也可以ta...

correct 211

POJ 3694 Network tarjan找桥+LCA

http://poj.org/problem?id=3694 A network administrator manages a large network. The network consists of N computers and M links between pairs of computers. Any pair of computers are connected directly...

xiji333的博客 240

Network POJ - 3694 (LCA+tarjan+桥)

题目链接:https://vjudge.net/problem/POJ-3694 具体思路:首先可以通过缩点的方式将整个图变成一个树,并且树的每条边是桥,但是我们可以利用dfn数组将整个图变成树,这样就可以省去缩点的过程了,同时lca的作用。假设有如下情况。 f-&gt;a    f-&gt;b,这是缩点之后的,如果在a,b之间加一条边的话,从a-&gt;a和b的最近公共祖先节点-&gt; ...

Let_life_stop的博客 343

POJ 3694 Tarjan e-DCC + LCA + 并查集

题意 传送门 POJ 3694 Network 题解 朴素做法是每次添加边使用 TarjanTarjanTarjan 算法求一次割边,总时间复杂度 O(Q(N+M))O(Q(N+M))O(Q(N+M))。 实际上被减少的割边不会再次计入。TarjanTarjanTarjan 求解割边,e−DCCe-DCCe−DCC 缩点,构成一棵树。每次查询,将 (x,lca(x,y)),(lca(x,y),y)(x,lca(x,y)),(lca(x,y),y)(x,lca(x,y)),(lca(x,y),y) 路径上的边

neweryyy的博客 138

POJ - 3694 Network tarjan缩点+lca

题目: https://vjudge.net/problem/POJ-3694 大意: 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中“桥”的数量。 只有当添加的边跨过桥的时候,桥才会消失 对题目中的每个边双联通分量缩点,得到一棵树,然后新加入的边的两端假如位于树的两个不同节点上,此时桥减少。 在新加入的树上可以使用并查集再进一步缩...

forOnward的博客 367

POJ-3694-Network(Tarjan+LCA+并查集)

链接:http://poj.org/problem?id=3694 给出无向图,动态加边,求每次加边后图中桥的个数。 缩点求并查集,然后按照DFS序找LCA维护桥的个数。 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #incl

不会吃鱼的喵 798

Network POJ - 3694(tarjan找桥+LCA)

思路:我们先用tarjan看有多少个桥,我们发现当u,v连起来后,u,v,lca(u,v)可能构成环,构成环后,则u和v所在的连通块中的所有桥失效。我们就不停的找u,v中存在的桥,tarjan在找桥时,若a是割点,那么他的后继b就是将来可能要被连起来的点,我们吧b标记为一个桥。 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostrea

Ray.C.L的博客 409

POJ 3694 Network (tarjan bcc + LCA)

题意: 给定无向图,q次加边操作,问加边后还有多少个桥给定无向图, q次加边操作, 问加边后还有多少个桥 分析: tarjan bcc来一发,求出初始桥数,并用并查集维护bcc内的点tarjan\ bcc来一发, 求出初始桥数, 并用并查集维护bcc内的点 相当于缩点了,隐式建图的是一个DAG,接下来只要加边就会形成环(bcc)相当于缩点了, 隐式建图的是一个DAG, 接下来只要加边就

TaoSama's Microcosm 582

POJ 3694 Network(tarjan+lca)

NetworkTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 10463 Accepted: 3899DescriptionA network administrator manages a large network. The network consists of N computers and M links between...

Mr_Treeeee的博客 431
上一篇: POJ 1470 LCA
下一篇: ZOJ 2238 Code
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值