Poj--1330(LCA,tarjan)

2014-10-26 15:28:49

思路:在线 / 离线LCA。练模板的。

 1 /*************************************************************************
 2     > File Name: 1330.cpp
 3     > Author: Nature
 4     > Mail: 564374850@qq.com 
 5     > Created Time: Sat 25 Oct 2014 04:22:56 PM CST
 6 ************************************************************************/
 7 
 8 #include <cstdio>
 9 #include <cstring>
10 #include <cstdlib>
11 #include <cmath>
12 #include <vector>
13 #include <map>
14 #include <set>
15 #include <stack>
16 #include <queue>
17 #include <iostream>
18 #include <algorithm>
19 using namespace std;
20 #define lp (p << 1)
21 #define rp (p << 1|1)
22 #define getmid(l,r) (l + (r - l) / 2)
23 #define MP(a,b) make_pair(a,b)
24 typedef long long ll;
25 const int INF = 1 << 30;
26 const int maxn = 10010;
27 
28 int T,n,ans,qa,qb;
29 int first[maxn],next[maxn],ver[maxn],ecnt;
30 int f[maxn],vis[maxn],fa[maxn];
31 
32 void Init(){
33     memset(first,-1,sizeof(first));
34     memset(vis,0,sizeof(vis));
35     memset(f,0,sizeof(f));
36     ecnt = 0;
37 }
38 
39 void Add_edge(int u,int v){
40     next[++ecnt] = first[u];
41     ver[ecnt] = v;
42     first[u] = ecnt;
43 }
44 
45 int Find(int x){
46     return fa[x] == x ? x : fa[x] = Find(fa[x]);
47 }
48 
49 void Union(int u,int v){
50     int x = Find(u);
51     int y = Find(v);
52     if(x != y)
53         fa[y] = x;
54 }
55 
56 bool Tarjan(int p){
57     fa[p] = p;
58     for(int i = first[p]; i != -1; i = next[i]){
59         int v = ver[i];
60         if(Tarjan(v))
61             return true;
62         Union(p,v);
63     }
64     vis[p] = 1;
65     if(p == qa && vis[qb]){
66         ans = Find(qb);
67         return true;
68     }
69     if(p == qb && vis[qa]){
70         ans = Find(qa);
71         return true;
72     }
73     return false;
74 }
75 
76 int main(){
77     int a,b;
78     scanf("%d",&T);
79     while(T--){
80         scanf("%d",&n);
81         Init();
82         for(int i = 1; i < n; ++i){        
83             scanf("%d%d",&a,&b);
84             Add_edge(a,b);
85             f[b] = 1;
86         }
87         scanf("%d%d",&qa,&qb);
88         for(int i = 1; i <= n; ++i){
89             if(!f[i]){
90                 Tarjan(i);
91                 break;
92             }
93         }
94         printf("%d\n",ans);
95     }
96     return 0;
97 }

 

转载于:https://www.cnblogs.com/naturepengchen/articles/4052037.html

微信小程序 - 最新实现人脸识别认证功能,使用官方微信小程序人脸识别身份验证接口及常见的人脸核验、用户实名认证、身份证件与人脸是否匹配、是否活体、领取业务人脸认证等各种示例(验证活体人脸是否匹配源码) 微信小程序中实现人脸识别认证,微信小程序人脸识别认证-微信开放接口,如何为微信小程序添加人脸识别和身份验证功能,如何为微信小程序集成人脸识别与身份验证,微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,微信小程序基于小程序实现人脸识别对比,人脸识别报错,微信人脸核身接口能力,微信小程序实名认证 人脸核验 人脸识别,微信小程序实名认证与人脸核身接口全解析,微信小程序-人脸识别+输出人脸匹配信息,微信小程序实名认证人脸核验人脸识别,微信小程序实名认证:wx.startFa 阅读详情

相关推荐

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

POJ - 1330 Nearest Common Ancestors(LCA tarjan)

POJ1330 题目 思路: LCA基础题,就一个询问。这里用的tarjan算法 推荐博客:大神博客 代码: #include #include #include using namespace std; const int maxn = 1e4+10; int f[maxn], h[maxn], anc[maxn], vis[maxn], isRoot[maxn]; int

shinimashzi 233

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

【lca】lca的tarjan写法 poj1330

今天看了一下午的lca的tarjan写法,发现果真还是不能全部理解,不过还是有大部分能够理解,就将自己的思路写在这里备忘吧。。 tarjan算法是基于并查集与dfs的一种离线算法 tarjan算法的步骤是(当dfs到节点u时): 1 在并查集中建立仅有u的集合,设置该集合的祖先为u,就是普通的并查集,fa[i] = i; 1 对u的每个孩子v:    1.1 tarjan之    1.

Fighting!! 565

[漏洞利用]利用五次Shift越权破解win7\win10开机密码

注:第一个学习和接触的Windows漏洞 文章目录本机实验环境前置知识漏洞原理漏洞介绍漏洞验证解决方法基本流程介绍详细步骤截图 本机实验环境 虚拟机:VMware Workstation 14 pro 操作系统:Windows10 前置知识 1、cmd工具路径 c:\windows\system32\cmd,按五次shift默认调用同目录下sethc文件,其路径为“c:\windows\system32\sethc.exe” 2、用户/账户密码存储位置 c:\windows\system32\config\

Y4tacker的博客 2万+

bugku渗透测试4-writeup

三、对这个主机进行全端口的扫描,发现存在22000 ssh端口,那么可以联想到时redis写入公钥来连接主机。又来了一个新的靶场,这个靶场打下来我觉得关键就是信息收集,走了很多的弯路。八、最后一个flag是要去看cms的数据库里面,这个数据库是sqlite。把这个数据库下载下来,登录密码是加密的,就直接用token。一、入口的漏洞是在登录的时候去抓包,修改action的值。六、没想到这个第一台机器的密码,在第二台里面。七、扫描第一台主机、使用之前的密码连接成功。获取最后一台主机的root密码。

vsdfbhsdhsdfh的博客 1298

poj1330 LCA(tarjan模板)

//tarjan牛逼 #include<cstdio> #include<iostream> #include<string.h> using namespace std; const int maxn = 500000+100; const int maxq = 500010; int F[maxn]; int find(int x){//找到祖先 ...

qq_41780519的博客 198

绕过Cloudflare的两种简便方案

绕过Cloudflare的两种简便方案

自成背后的博客 1万+

LCA,Tarjan——POJ1330

题目链接 题目含义 建树,求两个数的最近公共祖宗 题目分析 LCA入门模板题,还有一个树上倍增法不会 所以就只用Tarjan算法了 题目代码 #include<iostream> #include<stdio.h> #include<string.h> using namespace std; const int maxn=1...

weixin_30732487的博客 141

一个中科大差生的8年程序员工作总结

今年终于从大菊花厂离职了,离职前收入大概60w不到吧,在某乎属于比较差的,今天终于有空写一下自己的职场故事,也算是给自己近8年的程序员工作做个总结复盘。近8年有些事情做对了,也有更多事情做错了,在这里记录一下,希望能够给后人一些帮助吧,也欢迎私信交流。文笔不好,见谅,有些细节记不清了,如果有出入,就当是我编的这个故事吧。 PS:有几个问题先在这里解释一下,评论就不一一回复了 1、关于差生,我本人在科大时确实成绩偏下,差生主要讲这一点,没其他意思。 2、因为买房是我人生中的大事,我认为需要记录和总结一下

陈小房的自我修炼 5万+

基于Harness Engineering构建AI Agent的全自动化CI_CD流水线

AI Agent的CI/CD是指对Agent的全生命周期资产(代码、Prompt、RAG知识库、模型权重、工具配置)进行持续集成、持续测试、持续发布和持续观测的自动化流程,核心目标是在保障发布质量的前提下,最大化提升Agent的迭代效率。

AI云原生与云计算技术学院 625

POJ 1330 最近公共祖先LCA(Tarjan离线做法)

题目链接:http://poj.org/problem?id=1330 题目大意十分明了简单,就是给定一棵树,求某两个子节点的最近公共祖先,如果尚不清楚LCA的同学,可以左转百度等进行学习。 稍微需要注意的是,建树顺序需要按照题目给定的顺序进行,也就是说根被设定成第一个给出的结点,如样例2。 此题网上题解颇多,但是多是使用的邻接表存图,于是我这里采用了边表,不过实质上Tarjan的部分思想都

纳兰 660

10.嵌入式控制器EC实战 GPIO开发流程

文章目录1.General Control Register (GCR),通用控制寄存器,地址0x1602.GPDRA—GPDRJ端口数据寄存器组(共10组)3.Port Control n Registers (GPCRn, n = A0-I7),端口控制寄存器4.GPIO端口编程指导编程步骤端口初始化使用InitGPIOReg数据结构初始化所有端口默认工作模式读取输入引脚的值(STATE_ACin()): IT8502中各个引脚的描述见下表所示: 在嵌入式控制器EC的IT8502主控芯片中,通过芯片的

qq_30135687的博客 2285

POJ 1330(LCA tarjan 并查集)

题目大意给一个有根树,问你两个点的最近公共祖先分析虽然题目只查询一次,但用这道题来学习一下LCA的tarjan写法代码#include<cstdio> #include<iostream> #include<cmath> #include<cstring> #include<cstdlib> #include<queue> #include<map> #include<algorithm> #inc

AIDreamer 566

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【LCA-Tarjan】POJ 1330 Nearest Common Ancestors

前言 本人第一次做LCA,因为这是一个模板题,所以只讲算法思想 链接 http://poj.org/problem?id=1330 大意 在一棵树上,有nnn个节点,n−1n−1n-1条边,给定两个节点p,qp,qp,q,求它们的最近公共祖先 思路 TarjianTarjianTarjian算法(注意不是求强联通分量的那个TarjianTarjianTarjian,而是这个人...

Ajwallet 729

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【lca】【tarjan】【模板】POJ1330模板题

  这是我第一篇博客,写的肯定有点丑,轻喷(如果有人看的话。)   我们先搞懂tarjan lca算法的原理,   首先建树和记录询问信息(我看网上的代码大都由vector来完成),之后dfs这棵树,遍历树的时候,每个节点最初是没有标记的,当他以及他的所有子节点都已经被遍历后做上标记,回溯的时候,再把它加入到它父节点的集合里,这里用并查集来完成。这样的话,假定我们已经遍历了询问列表中...

aochun16483765的博客 110

ssm框架搭建

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

POJ1330(LCA-离线tarjan)

Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15463   Accepted: 8276 Description A rooted tree is a well-known data structure in

crazy_石头的专栏 1005

poj1330 lca_tarjan || 并查集

此题是lca裸问题,而且居然问题还每次还只有1个,貌似水的过去,但是为了看rmq和lca的转化,就先把tarjan给搞定了吧。。。 离线算法 Tarjan 利用并查集优越的时空复杂度,我们可以实现LCA问题的O(n+Q)算法,这里Q表示询问的次数。Tarjan算法基于深度优先搜索的框架,对于新搜索到 的一个结点,首先创建由这个结点构成的集合,再对当前结点的每一个子树进行搜索,每搜索完一棵子树,

lyc 645

POJ 1330 Nearest Common Ancestors【tarjan】【简单LCA】【模板题】【并查集】

题目链接:http://poj.org/problem?id=1330 题目大意:给出n个父子关系,不会出现回路,求最原始祖先(根节点)。 照大佬的板子自己手码了一遍,还挺长,,, AC代码: #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include&...

weixin_43499182的博客 208

LCA问题的Tarjan算法(POJ1330)

LCA问题(Least Common Ancestors,最近公共祖先问题),是指给定一棵有根树T,给出若干个查询LCA(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找一个节点,同时是u和v的祖先,并且深度尽可能大(尽可能远离树根)。 LCA问题有很多解法:线段树、Tarjan算法、跳表、RMQ与LCA互相转化等。本文主要讲解Tarjan算法的原理及详细实现。

AC_dream 1168

POJ1330-Nearest Common Ancestors【tarjan,LCA】

正题 题目大意 就是给出一棵树,求LCA(最近公共祖先) 解题思路 用tarjan求LCA,这里给出tarjan算法 代码 #include&amp;lt;cstdio&amp;gt; #include&amp;lt;iostream&amp;gt; using namespace std; struct line{ int next,to; }a[20001]; int father[100...

QuantAsk 415

POJ1330-Nearest Common Ancestors(LCA tarjan做法)

题目链接 A rooted tree is a well-known data structure in computer science and engineering. An example is shown below: In the figure, each node is labeled with an integer from {1, 2,...,16}. Node 8 is the...

QAQ 259

【LCA|Tarjan】POJ-1330 Nearest Common Ancestors

T组数据,每组数据给出N个点和N-1条边,每条边先给出父结点,最后一行查询一对结点,输出它们的最近公共祖先。

JSure的代码库 996

POJ 1330 Nearest Common Ancestors 【用Tarjan求LCA】

题目链接:http://poj.org/problem?id=1330题意: 有一棵树,n个结点n-1条边,给你这几条边的信息,再给你两个点,求这两个点的LCA(最近公共祖先) 题解: 一道小题,直接用Tarjan就水过去了,注意细节!代码:#include <cstdio> #include <vector> #include <cstring>using namespace

BlueSky 254

poj 1330 Nearest Common Ancestors (LCA 裸 tarjan)

题意:就是给你n个点,n-1条边的树,只有一组询问,问你(u,v)的最近公共祖先是谁思路:就是一个裸的LCA嘛,LCA现在只会写离线的tarjan,讲一下把,tarjan就是我们先记录下我们需要查询的值,之后跑一遍tarjan,在跑的时候,记录下当前点的父亲节点(并查集维护一下),如果我们的当前点在我们的记录数组中的话,我们就开始查询和当前点(u)有关系的所有节点(v),看看他有没有被访问过,如果...

wjmwsgj的博客 171

poj1330 Nearest Common Ancestors LCA离线tarjan

http://poj.org/problem?id=1330 Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18970   Accepted: 10044 Description A rooted t

415
上一篇: Poj--1470(LCA,离线tarjan / 在线倍增)
下一篇: Poj--1986(LCA,tarjan,带权树)
dingdi3021
博客等级 码龄11年 1粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值