国庆集训D1T3 小X的佛光

2024-03-24 14:48
文章标签 国庆 集训 佛光 d1t3

本文主要是介绍国庆集训D1T3 小X的佛光,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

存双向边要开两倍空间!!!!!

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
using namespace std;
const int N=4e5+1000;
int n,q,num;
int nxt[N],to[N],head[N],len;
int dep[N],fa[N][21];
void addedge(int u,int v){ nxt[++len]=head[u]; to[len]=v; head[u]=len; }
void dfs(int v,int dp,int father){dep[v]=dp; fa[v][0]=father;rep(i,1,20) fa[v][i]=fa[fa[v][i-1]][i-1];for(int i=head[v];i!=0;i=nxt[i]){//初始化为-1??if(to[i]==father) continue;dfs(to[i],dp+1,v);}
}
int lca(int u,int v){if(dep[u]<dep[v]) return lca(v,u);per(i,20,0) if(dep[fa[u][i]]>=dep[v]) u=fa[u][i];if(u==v) return v;per(i,20,0) if(fa[u][i]!=fa[v][i]) u=fa[u][i],v=fa[v][i];return fa[u][0];
}
int main(){scanf("%d%d%d",&n,&q,&num);rep(i,1,n-1){int x,y; scanf("%d%d",&x,&y);addedge(x,y); addedge(y,x);}dfs(1,1,0);while(q--){int a,b,c,fab,fac,fbc,cent;scanf("%d%d%d",&a,&b,&c);fab=lca(a,b); fac=lca(a,c); fbc=lca(b,c);if(dep[fab]>dep[fac]) cent=fab; else cent=fac;if(dep[cent]<dep[fbc]) cent=fbc;printf("%d\n",dep[cent]+dep[b]-dep[lca(cent,b)]*2+1);}return 0;
}

这篇关于国庆集训D1T3 小X的佛光的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841920

相关文章

2014暑假集训搜索专题

A - 漫步校园 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description LL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划

中秋国庆请客喝酒,面子与钱包双赢的红酒选择

平时生活中,总少不了各种聚会,不管是朋友小聚,还是正式的商务宴请,酒都是少不了的,而现在,越来越多的人都喜欢选择红酒来助兴。 喝红酒的人不少,懂红酒的人却不多。有时候真的很尴尬,明明环境菜都不错,就是红酒太难喝,每一口都要鼓足勇气才能下咽。 其实,酒也是饭局的重要组成部分,如果酒不好喝,客人事后也是会暗暗吐槽的。所以,一个好的饭局,酒一定也是好的。 这里说的“好”,既要面子上

寒假集训第二天——线性表

现在时间是北京时间1点23分,第二天集训。。。 昨天花了老长时间把线性表看了下,表示很有压力,不大会用。。。 先说下我学到的线性表的皮毛。。。 首先是链表的构建,构建有两种方式: 顺序链表(尾插法建单链表) #include<stdio.h>struct node{int date;struct node *next;};int main(){int i,n;node *he

寒假集训第一天——结构体

期待已久的寒假集训终于开始了,第一天讲的内容比较简单——结构体,之前就学了点。。。 表示普通的结构体会用,涉及到指针都不大会,今天算是学了点指针的用法。。。 作业描述如下: 结构体 今天作业  1.定义一个acmer结构体,包括以下信息:姓名,学号,手机号,做题数,出生日期,其中出生日期date也是一个结构体,包括年、月、日  2.建立结构体数组,实现对多个同学

寒假集训——字典树(模板)

struct node{int v;node *next[26];} T[1000000];int t=0;node *newnode(){node *p=new node;//动态分配//node *p=&T[t++];//静态分配p->v=0;for(int i=0; i<26; i++)p->next[i]=NULL;return p;}void insertnode(node

寒假集训——二叉树

#include <iostream>#include <stdio.h>#include <string.h>#include <queue>using namespace std;typedef struct node{char date;node *lch,*rch;}Bn,*Bt;void cbtree(Bt &T)//先序建二叉树{char c;scanf("%c"

数据结构代码集训day14(适合考研、自学、期末和专升本)

题目均来自b站up:白话拆解数据结构! 今日题目如下:(1)试写一个算法判断给定字符序列是否是回文。 (2)给定一个算法判断输入的表达式中括号是否匹配。假设只有花、中、尖三种括号。 题1         回文序列即正着读反着读,都是一样的。比如abba就是回文序列,abab就不是。         由于要反着读,能够很容易想到一种线性结构——栈。栈后进先出,很容易实现输入序列的反

国庆节微信头像怎么制作?制作国庆国旗节日头像的4个方法

国庆将至,不少朋友的微信头像都换成了渐变红旗头像,是不是觉得超酷呢?如果你也想拥有这样的头像,那就跟着这篇文章一起操作吧!   国庆节前夕,让我们先来了解一下如何制作渐变红旗头像。首先,我们需要找到一款能够实现这一功能的软件。这里推荐使用一键抠图工具,它不仅能够精准批量抠出人像、物品等,还能轻松置换背景,快速生成证件照。 一、奈斯百宝箱(小程序) 使用奈斯百宝箱来打造国庆头像,过

nefu暑假集训4 哈希 个人模板+例题汇总

前言:   什么是哈希?哈希其实是所有字符串操作中,最简单的操作了(哈希的过程,其实可以看作对一个串的单向加密过程,并且需要保证所加的密不能高概率重复(就像不能让隔壁老王轻易地用它家的钥匙打开你家门一样qwq),通过这种方式来替代一些很费时间的操作。 比如,最常见的,当然就是通过哈希数组来判断几个串是否相同(洛谷P3370)。此处的操作呢,很简单,就是对于每个串,我们通过一个固定的转换方式,将相

PTA - C语言国庆题集3

目录 7-41 单词翻转7-42 括号匹配7-43 汉诺塔问题(Hanoi)7-44 判断10的倍数7-45 求5个整数中的最小数7-46 求n个数中的最大值7-47 一批数中最大值最小值7-48 计算平方和7-49 毕达哥拉斯三元组7-50 计算一组x和y7-51 筛法求素数7-52 完美的素数7-53 位运算7-54 头插法创建单链表、遍历链表、删除链表7-55 合并有序数组7-57 英