POJ1330(最近公共祖先)
题目:http://poj.org/problem?id=1330
最近公共祖先的离线算法:
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
using namespace std;
const int N = 10005;
int n;
vector<int> vec[N];
int pre[N];
bool vis[N];
bool root[N];
int u,v;
void Init()
{
for(int i=0; i<N; i++)
{
vec[i].clear();
pre[i] = i;
root[i] = true;
vis[i] = false;
}
}
void Import()
{
scanf("%d",&n);
Init();
for(int i=1; i<n; i++)
{
int a,b;
scanf("%d%d",&a,&b);
vec[a].push_back(b);
root[b] = false;
}
scanf("%d%d",&u,&v);
}
int Find(int x)
{
if(pre[x] != x)
pre[x] = Find(pre[x]);
return pre[x];
}
void Union(int x,int y)
{
x = Find(x);
y = Find(y);
if(x == y) return;
pre[y] = x;
}
void LCA(int par)
{
for(int i=0;i<vec[par].size();i++)
{
LCA(vec[par][i]);
Union(par,vec[par][i]);
}
vis[par] = true;
if(par == u && vis[v] == true)
{
printf("%d\n",Find(v));
return;
}
if(par == v && vis[u] == true)
{
printf("%d\n",Find(u));
return;
}
}
void Work()
{
int T;
scanf("%d",&T);
while(T--)
{
Import();
for(int i=1;i<=n;i++)
{
if(root[i] == true)
{
LCA(i);
break;
}
}
}
}
int main()
{
Work();
return 0;
}
POJ1330(最近公共祖先)相关推荐
- POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA)...
POJ 1330 Nearest Common Ancestors / UVALive 2525 Nearest Common Ancestors (最近公共祖先LCA) Description A ...
- 例题 - 最近公共祖先 - 离线算法
贴几篇LCA知识点的博客详解: CSDN - 青烟绕指柔!的博客 - 倍增算法 CSDN - Nekroz_的博客 CSDN - Dust_Heart的博客 CSDN - creatorx的博客 -T ...
- LCA 最近公共祖先
LCA ,也就是最近公共祖先是什么意思呢. 下面这张图可能会让你清楚的明白什么是最近公共祖先. 对于初始点,前提是它能构成一棵不成环的树,之所以不能成环,从定义就看出来了嘛,如果成环,是不是有种1是3 ...
- 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!
对该问题,分为如下几种情形讨论: 情形一: 假如该树为二叉树,并且是二叉搜索树, 依据二叉搜索树是排过序的, 我们只需要从树的根结点开始,逐级往下,和两个输入的结点进行比较. 如果当前结点的值比两个结 ...
- 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
已知二叉树,求二叉树中给定的两个节点的最近公共祖先. 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低(离根最 远),且v,w两个节点都是u的子孙. 如上二叉树,6和8号节点的公共祖先有4 ...
- Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)...
转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html 基本概念: 1.割点:若删掉某点后,原连通图 ...
- LeetCode实战:二叉树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- LeetCode实战:二叉搜索树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- 0x63.图论 - 树的直径与最近公共祖先
目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...
最新文章
- 解决ModuleNotFoundError: No module named ‘pip‘问题
- 内连级元素有哪些_CSS里有哪些常见的块级元素和行内元素?
- I.MX6 Android busybox 从哪里生成的
- 【XAudio2】3.关键概念
- 【JS】执行上下文(ExcecutionContext)
- (笔记)Linux服务器中判断客户端socket断开连接的方法
- 前后台交互经常使用的技术汇总(后台:Java技术,前台:Js或者Jquery)
- 整合Flask中的目录结构
- 职业生涯最差绩效:M-
- html加载js那些事
- CocoaPods 报错 [!] Error installing JSONModel
- 2019年互联网大厂月饼大盘点,最丑的一家竟然是...
- 清除img和文字间的空隙【vertical-align的用途】
- CPC客户端编写新申请时报错异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
- 周育如的音标口诀大全_音标记忆顺口溜(48个),快速记忆音标口诀!
- MindMaster Pro 8.0.0 — 亿图思维导图
- 财务会计中会计科目的基础
- 科技云报道:服务数字中国,青云十周年迎来“成年礼”
- 孩子,外面的世界不会轻易原谅你…
- 五分钟看懂同城小程序是什么,能做什么!
热门文章
- 关于Spring Bean实例注册的流程
- Spring 核心价值
- 微服务网关-Gateway-LoadBalancerClient实现负载均衡讲解
- RocketMQ错误消息重试策略之Consumer的重试机制(Exception情况)
- Zuul:Cookie和动态路由
- jvm_垃圾收集算法讲解(一)
- Netty--Reactor模式
- python实时获取子进程输出_Python 从subprocess运行的子进程中实时获取输出的例子...
- win32 输出文字时清除之前的_努力学习没效果?3个步骤,强化沟通输出,实现飞跃式成长...
- linux网络保存退出,linux编辑文件后如何保存退出