最低公共祖先java_满族的祖先是

最低公共祖先java_满族的祖先是原题链接题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。输出格式输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。输入

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

题目描述
如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。

输入格式
第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。

接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。

接下来 MM 行每行包含两个正整数 a, ba,b,表示询问 aa 结点和 bb 结点的最近公共祖先。

输出格式
输出包含 MM 行,每行包含一个正整数,依次为每一个询问的结果。

输入输出样例
输入

5 5 4
3 1
2 4
5 1
1 4
2 4
3 2
3 5
1 2
4 5

输出

4
4
1
4
4

题解
Tarjan离线求lca

#include<bits/stdc++.h>
#define x first
#define y second
#define send string::npos
#define lowbit(x) (x&(-x))
#define left(x) x<<1
#define right(x) x<<1|1
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
typedef struct Node * pnode;
const int N = 5e5 + 10;
const int M = 3 * N;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const int Mod = 1e9;
vector<PII>query[N];
int fa[N],vis[N],res[N];
int head[N],cnt;
struct Edge{ 
   
    int v,next;
}edge[M];
void add(int u,int v){ 
   
    edge[cnt].v = v;
    edge[cnt].next = head[u];
    head[u] = cnt ++;
}
void init(){ 
   
    for(int i = 0;i < N;i ++)fa[i] = i;
}
int Find(int x){ 
   
    return fa[x] = (fa[x] == x ? x : Find(fa[x]));
}
void Tarjan(int u,int f){ 
   
    vis[u] = true;
    for(auto &q : query[u]){ 
   
        int y = q.x,id = q.y;
        if(vis[y])res[id] = Find(y);    //如果之前遍历过另一个节点
    }
    for(int i = head[u];~i;i = edge[i].next){ 
   
        int ver = edge[i].v;
        if(ver == f)continue;
        Tarjan(ver,u);
        fa[ver] = u;
    }
}
int main(){ 
   
    memset(head,-1,sizeof head);
    init();
    int n,m,root,x,y;
    cin>>n>>m>>root;
    for(int i = 0;i < n - 1;i ++){ 
   
        cin>>x>>y;
        add(x,y);
        add(y,x);
    }
    for(int i = 0;i < m;i ++){ 
   
        cin>>x>>y;
        query[x].push_back({ 
   y,i});
        query[y].push_back({ 
   x,i});
    }
    Tarjan(root,-1);
    for(int i = 0;i < m;i ++)cout<<res[i]<<endl;

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168770.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • navcat premium 15 for mac 激活码【最新永久激活】「建议收藏」

    (navcat premium 15 for mac 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1M2OME2TZY-eyJsaWNlbnNlSWQi…

  • filter dispatcher_EncodingFilter

    filter dispatcher_EncodingFilterFilterDispatcher的作用1.用来装载配置和设置静态资源的package publicvoidinit(FilterConfigfilterConfig)throwsServletException{               init();              Stringparam=filterConfig.getInitPa

  • 用python下载b站视频_tagB站

    用python下载b站视频_tagB站作者|Rocky0429来源|Python空间大家好,我是Rocky0429。B站,作为Z世代的新式社交性学习平台,对我来说一直只是一个学习的好去处,学习这事儿肯定是我留在B站的唯一原因…如果你非要问我为什么之前一直在循环播放“听狄胖的话”,那我也只能告诉你是我不小心点了鬼畜区,想知道小元芳是不是真的有许多问号…我承认是我真的太年轻了,对知识总是太饥渴…好了,这一篇儿可以翻过了,下面说点正经的…我Python学习的很多视频都是在B站上看的,刚.

  • voliate关键字的作用[通俗易懂]

    voliate关键字的作用[通俗易懂]一、内存可见性基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存。这样每个线程都能获取到最新的变量值。二、基于内存屏障的防止指令重排用voliate修饰的变量,可以防止cpu指令重排序。底层的实现方式是基于4种内存屏障:读读、读写、写读、读读屏障。…

  • MySQL 5.7root用户密码修改[通俗易懂]

    MySQL 5.7root用户密码修改[通俗易懂]在MySQL5.7password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”.选择数据库:usemysql;更新root的密码:updateusersetauthentication_string=password(‘新密码’)whereuser=’root’andHost=’localhost’;刷新权限:fl…

  • plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」

    plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」(oracle官网下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html,下载地址2:http://download.csdn.net/detail/czw2010/5732241)2.解压instantclient-basic-win32-11.2.0.1.0并放置在oracle安装目录的product下(放置位置…

    2022年10月24日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号