首页 > 其他分享 > LCA

LCA

时间:2022-10-24 22:33:10浏览次数:27  
标签:return anc int vis dfs fa LCA

倍增算法

预处理 O(nlogn)

单次询问 O(logn)

void dfs(int u, int fa)
{
	for (int i = hd[u]; i; i = g[i].nxt)
	{
		int v = g[i].to;
		if (v == fa)
			continue;
		d[v] = d[u] + 1;
		anc[v][0] = u;
		dfs(v, u);
	}
	return;
}
void init()
{
	for (int j = 1; j <= 18; j++)
		for (int i = 1; i <= n; i++)
			anc[i][j] = anc[anc[i][j - 1]][j - 1];
}
int LCA(int u, int v)
{
	if (d[u] < d[v])
		swap(u, v);
	for (int i = 18; i >= 0; i--)
		if (d[anc[u][i]] >= d[v])
			u = anc[u][i];
	if (u == v)
		return u;
	for (int i = 18; i >= 0; i--)
		if (anc[u][i] != anc[v][i])
			u = anc[u][i], v = anc[v][i];
	return anc[u][0];
}

 

Tarjan算法(离线)

时间复杂度 O(n + m)

inline int find(int x) { return x == fa[x] ? x : fa[x] = find(fa[x]); }
void dfs(int u)
{
	fa[u] = u;
	vis[u] = 1;
	for (int i = 0; i < G[u].size(); i++)
	{
		int v = G[u][i];
		if (vis[v])
			continue;
		dfs(v);
		fa[v] = u;
	}
	for (int i = 0; i < Q[u].size(); i++)
	{
		int v = Q[u][i].first;
		if (!vis[v])
			continue;
		ans[Q[u][i].second] = find(v);
	}
}

 

标签:return,anc,int,vis,dfs,fa,LCA
From: https://www.cnblogs.com/xqk0225/p/16823298.html

相关文章

  • 【Vue】fullcalendar - next ,prev切换回调处理
    如(4条消息)fullcalendar-next,prev等切换月份回调处理_Q.E.D.的博客-CSDN博客_fullcalendarprev这篇博客所说,fullcalendarnext,prev等切换月份的按钮是没有回调函......
  • LCA
    #include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineullunsignedlonglong#defineendl"\n"#definesfscanf#definepfprintf#define......
  • 【图论复习】Tarjan 算法(Tarjan LCA 除外)
    好久没写Tarjan,反正也快CSP了,赶紧复习一下。Tarjan就是基于dfs树中的dfs序以及low数组来进行搜索,注意不同的算法low的更新时不一样的,其他的感觉没什么好讲的......
  • Eclipse插件开发XmlCatalog
    介绍扩展点org.eclipse.wst.xml.core.catalogContributions​......
  • 洛谷P4320 道路相遇(LCA+圆方树)
    题目链接:https://www.luogu.com.cn/problem/P4320道路相遇题目描述在H国的小w决定到从城市$u$到城市$v$旅行,但是此时小c由于各种原因不在城市$u$,但是小c决......
  • adg dumplcate数据库搭建--ora-01537
    dumplicate数据库搭建过程中如下报错  通过以下命令查看相关ora报错信息[oracle@oracle11g~]$oerrora153701537,00000,"cannotaddfile'%s'-filealread......
  • 靶场VNH练习(3)TROLLCAVE: 1.2
    靶场名称:TROLLCAVE:1.2难度:简单目标:拿到root账户的flag文件下载链接:https://www.vulnhub.com/entry/trollcave-12,230/环境搭建使用虚拟机打开ova文件这里没有IP,......
  • 【解题报告】[LNOI 2014] LCA/[GXOI/GZOI 2019] 旧词
    【省选系列】[LNOI2014]LCA/[GXOI/GZOI2019]旧词首黑祭,好耶![LNOI2014]LCA首先考虑,每个节点对答案的贡献,我们可以发现LCA一定会在z到根节点的路径上,每个节点每次增......
  • 2022 ICPC网络赛(二) F Infinity Tree(规律 LCA)
    2022ICPC网络赛(二)FInfinityTree题意:​ 现在给出一个树,对于这棵树,一开始有一个根节点1,每秒之后,每个节点会长出k个节点。节点的最大编号为\(1e18\)。现在给出任意两个......
  • G2. Passable Paths (hard version)-LCA
    G2.PassablePaths(hardversion)https://codeforces.ml/contest/1702/problem/G2题意给你一个树q次询问每次询问一个集合,有m个数\(a_1...a_m\)问这些点组成的路......