POJ 1330 LCA最近公共祖先 离线tarjan算法

题意要求一棵树上,两个点的最近公共祖先 即LCA

现学了一下LCA-Tarjan算法,还挺好理解的,这是个离线的算法,先把询问存贮起来,在一遍dfs过程中,找到了对应的询问点,即可输出

原理用了并查集和dfs染色,先dfs到底层开始往上回溯,边并查集合并 一边染色,这样只要询问的两个点均被染色了,就可以输出当前并查集的最高父亲一定是LCA,因为我是从底层层层往上DSU和染色的,要么没被染色,被染色之后,肯定就是当前节点是最近的

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 10000+10;
int f[N],pre[N],vis[N];
int ans[N];
vector<int> v[N];
int n,S,T;
void init()
{for (int i=0;i<=n+1;i++){f[i]=i;v[i].clear();vis[i]=0;pre[i]=-1;}
}
int findset(int x)
{if (x!=f[x]){f[x]=findset(f[x]);}return f[x];
}
int unionset(int a,int b)
{int r1=findset(a);int r2=findset(b);if (r1==r2) return r1;f[r2]=r1;return r1;
}
void LCA(int u)
{ans[u]=u;for (int i=0;i<v[u].size();i++){int vx=v[u][i];LCA(vx);int rt=unionset(u,vx);ans[rt]=u;}vis[u]=1;if (u==S){if (vis[T]){printf("%d\n",ans[findset(T)]);return;}}elseif (u==T){if (vis[S]){printf("%d\n",ans[findset(S)]);return;}}}
int main()
{int t,a,b;scanf("%d",&t);while (t--){scanf("%d",&n);init();for (int i=1;i<n;i++){scanf("%d%d",&a,&b);v[a].push_back(b);pre[b]=a;}scanf("%d%d",&S,&T);for (int i=1;i<=n;i++){if (pre[i]==-1){LCA(i);break;}}}return 0;
}

  

转载于:https://www.cnblogs.com/kkrisen/p/3902868.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

deferred Transports Protocols 简单介绍

2019独角兽企业重金招聘Python工程师标准>>> Twisted架构概览 Twisted是一个事件驱动型的网络引擎。由于事件驱动编程模型在Twisted的设计哲学中占有重要的地位&#xff0c;因此这里有必要花点时间来回顾一下究竟事件驱动意味着什么。 事件驱动编程是一种编程范式&a…

java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

原标题&#xff1a;IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术Cookie使用HTTPHeader传递数据。Cookie机制定义了两种报头&#xff0c;Set-Cookie报头和Cookie报头。Set-Cookie报头包含于Web服务器的响应头(ResponseHeader)中&#xff0c;Cookie报头包含在浏览器客户端请…

FAT和EXFAT文件系统

源&#xff1a;FAT和EXFAT文件系统转载于:https://www.cnblogs.com/LittleTiger/p/8022450.html

关于easyUI在子页面增加显示tabs的一个问题

关于easyUI在子 在父页面点个链接能动态看到子页面的情况太简单&#xff0c;请看easyUI官网&#xff1a;http://www.jeasyui.com/tutorial/layout/tabs2.php 现在说的是在子页面点个按钮也能触发增加子页面的情况。 情景是&#xff0c;在父页面上有个div如&#xff1a; Html代…

java 两个窗口 贴_粘贴子窗体中的多个记录时的子窗体校准错误

我对子窗体上的所有三个事件进行计算以更新主窗体&#xff1a;Private Sub Form_AfterDelConfirm(Status As Integer)Me.Parent.UpdateStundenEnd SubPrivate Sub Form_AfterInsert()Me.Parent.UpdateStundenEnd SubPrivate Sub Form_AfterUpdate()Me.Parent.UpdateStundenEnd …

SDN第二次上机作业

1、安装floodlight 2、生成拓扑并连接控制器floodlight&#xff0c;利用控制器floodlight查看图形拓扑 3、利用字符界面下发流表&#xff0c;使得‘h1’和‘h2’ ping 不通 4、利用字符界面下发流表&#xff0c;通过测试‘h1’和‘h3’的联通性&#xff0c;来验证openflow的har…

Android保存图片到本地相册

好久没有写东西了。备份下知识吧。免得忘记了 。 首先贴一段代码 &#xff0d;&#xff0d; 这个是先生成一个本地的路径&#xff0c;将图片保存到这个文件中&#xff0c;然后扫描下sd卡。让系统相册重新加载下 。缺点就是只能保存到DCIM的文 件夹下边&#xff0c;暂时不知道怎…

PHP的钩子实现解析

2019独角兽企业重金招聘Python工程师标准>>> 钩子是编程里一个常见概念&#xff0c;非常的重要。它使得系统变得非常容易拓展&#xff0c;&#xff08;而不用理解其内部的实现机理&#xff0c;这样可以减少很多工作量&#xff09;。只要有一个钩子样本&#xff0c;能…

writer在java中的意思_Java在FileWriter和BufferedWriter之间的区别

小编典典如果您使用BufferedWriter则效率更高在刷新/关闭之间有多次写入与缓冲区大小相比&#xff0c;写操作较小。在您的示例中&#xff0c;您只有一次写入&#xff0c;因此BufferedWriter只会增加您不需要的开销。这是否意味着第一个示例一个接一个地写入字符&#xff0c;第二…

Ubuntu配置静态IP

进入 /etc/network/interfaces&#xff0c;修改成如下&#xff1a; # interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto ens33iface ens33 inet staticaddress 192.168.1.110netmask 255.255.255.0gateway 192.168.1.1dns-nameserver 8.8.8…

tiny xml 使用总结

这几天在埋头写自己的3D文件浏览器&#xff08;稍后发布&#xff09;&#xff0c;突发奇想的要把自己的内部格式转化成XML&#xff0c;于是&#xff0c;把以前在研究所时用过的ExPat翻了出来。ExPat是基于事件的XML解释器&#xff0c;速度挺快的&#xff0c;但结构方面有点不敢…

Beta冲刺! Day2 - 砍柴

Beta冲刺&#xff01; Day2 - 砍柴 今日已完成 晨瑶&#xff1a;大致确定了文章推荐的算法思路&#xff08;Content-based recommender&#xff09;&#xff1b;理清了不少feature的事宜昭锡&#xff1a;修复了日期选择越界时导致程序崩溃和点击光点返回后&#xff0c;日期选择…

Android版添加phonegap--websocket客户端插件教程

2019独角兽企业重金招聘Python工程师标准>>> 1.在Eclipse中新建Android Project项目chatdemo2.把animesh kumar的websocket-android-phonegap项目java文件打成phonegap-websocket-support.jar包&#xff0c;存放在 android project的libs目录下3.把websocket.js存放…

java参数传入的是一个类名_Java编程细节——泛型的定义(类、接口、对象)、使用、继承...

1. 设计泛型的初衷&#xff1a;1) 主要是为了解决Java容器无法记忆元素类型的问题&#xff1a;i. 由于Java设计之初并不知道会往容器中存放什么类型的元素&#xff0c;因此元素类型都设定为Object&#xff0c;这样就什么东西都能放了&#xff01;ii. 但是这样设计有明显的缺点&…

ExtJS Grid Column Number

{xtype: numbercolumn,text: 亏盈数量,width: 130,dataIndex: LossOrProfitNum,editor: {xtype: numberfield,minValue: 0,decimalPrecision: 2},renderer: function (value, cellmeta) {return Ext.util.Format.number(value, 0.00);}}转载于:https://www.cnblogs.com/denghua…

#define | enum(enumerator)

/***************************************************************************** #define | enum(enumerator)* 声明&#xff1a;* 今天突然在Linux内核看到枚举和宏&#xff0c;感觉是一样的功能&#xff0c;于是找了一下他们* 之间差异。** …

网页制作中如何自定义网页图标

第一步&#xff0c;准备一个图标制作软件。 首先您必须了解所谓的图标&#xff08;Icon&#xff09;是一种特殊的图形文件格式&#xff0c;它是以.ico 作为扩展名。普通的图像设计软件无法使用这种格式&#xff0c;所以您需要到下载一个ico图标工具,本站常用软件既有,推荐强大…

ext 解析后台返回response.responseText中的数据

Ext.Ajax.request({ url: "...", method: "POST", params: { currentID: mainNode.attributes.id }, success: function (response) { var resp Ext.decode(response.responseText )&#xff1b; resp.totalCount; } }); //ajax over //响应中返回的resp…

java资源争夺_所有满足类似需求,争夺同类资源的组织和个人统称为(   )。...

【判断题】重合断面的轮廓线用细实线绘制。【单选题】阿萨德法师法啥【单选题】三相桥式交叉连接电路为限制脉动环流需要( )平衡电抗器【单选题】地方搞活动风格化大发光火【填空题】若s是int型变量,且s6,则表达式s%2(s1)%2的值为________。【填空题】负反馈的作用是( )。【单选…

Linux环境下安装部署AWStats日志分析系统实例

AWStats是使用Perl语言开发的一款开放性日志分析系统&#xff0c;可分析Apache网站服务器的访问日志&#xff0c;还可以用来分析Samba、Vsftpd、IIS等日志信息。此文章主要讲解如何在linux系统下安装部署关于对Apache网站服务站日志分析的AWStats。实验步骤一&#xff0c;安装部…