1787: [Ahoi2008]Meet 紧急集合

Time Limit: 20 Sec   Memory Limit: 162 MB
Submit: 2272   Solved: 1029
[ Submit][ Status][ Discuss]

Description

Input

Output

Sample Input

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

Sample Output


5 2
2 5
4 1
6 0

HINT

Source

Day1

参考hzwer题解:

求最近公共祖先题目,dis函数求两点之间距离。

可以推导发现,三点间的lca必定有一对两两相等,所以确定哪两两相等后取另一个就是答案。

code如下:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
bool vis[500100];
int q[500100],fa[500100][20],bin[20];
int n,m,u[1000100],v[1000100],deep[500100],first[1000100],nxt[1000100];
void make_bin()
{bin[0]=1;for(int i=1;i<=19;i++)bin[i]=bin[i-1]<<1;
}
void bfs()
{int head=0,tail=1;q[0]=1,vis[1]=true;while(head^tail){int now=q[head++];for(int i=1;i<=15;i++)if(bin[i]<=deep[now])fa[now][i]=fa[fa[now][i-1]][i-1];else break;for(int i=first[now];i;i=nxt[i])if(!vis[v[i]]){vis[v[i]]=true;fa[v[i]][0]=now;deep[v[i]]=deep[now]+1;q[tail++]=v[i];}}
}
int lca(int x,int y)
{if(deep[x]<deep[y])swap(x,y);int t=deep[x]-deep[y];for(int i=0;i<=15;i++)if(t&bin[i])x=fa[x][i];for(int i=15;i>=0;i--)if(fa[x][i]^fa[y][i])x=fa[x][i],y=fa[y][i];if(!(x^y))return y;return fa[x][0];
}
void Init()
{memset(vis,false,sizeof(vis));memset(nxt,0,sizeof(nxt));memset(first,0,sizeof(first));memset(fa,0,sizeof(fa));
}
int dis(int x,int y)
{int t=lca(x,y);return deep[x]+deep[y]-2*deep[t];
}
int solve(int a,int b,int c)
{int p1=lca(a,b),p2=lca(a,c),p3=lca(b,c),t;if(!(p1^p2))t=p3;else if(!(p2^p3))t=p1;else t=p2;int ans=dis(a,t)+dis(b,t)+dis(c,t);printf("%d %d\n",t,ans);
}
int main()
{make_bin();Init();scanf("%d%d",&n,&m);for(int i=1;i<=n-1;i++){scanf("%d%d",&u[i],&v[i]);nxt[i]=first[u[i]];first[u[i]]=i;u[i+n-1]=v[i],v[i+n-1]=u[i];nxt[i+n-1]=first[v[i]];first[v[i]]=i+n-1;}bfs();for(int a,b,c;m;m--){scanf("%d%d%d",&a,&b,&c);solve(a,b,c);}return 0;
}

bzoj1787 [Ahoi2008]Meet 紧急集合相关推荐

  1. [bzoj1787][Ahoi2008]Meet 紧急集合 倍增LCA

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 999999999 Solved: 99999999 ...

  2. BZOJ1787: [Ahoi2008]Meet 紧急集合

    [传送门:BZOJ1787] 简要题意: 给出有n个点的图,n-1条无向边,保证任意两点之间能互相到达,每条边的权值为1,给出m个询问,每个询问输入x,y,z,求出一个点使得三个点到这个点的距离和最短 ...

  3. BZOJ1787 [Ahoi2008]Meet 紧急集合 LCA

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1787 题意概括 有一棵节点为n个(n≤500000)的树.接下来m次询问(m≤500000),每次 ...

  4. [BZOJ1787][Ahoi2008]Meet 紧急集合

    原题地址 倍增LCA复习题- AC code: #include <cstdio> #include <vector> using namespace std; const i ...

  5. [BZOJ1787][Ahoi2008]Meet 紧急集合[BZOJ1832][AHOI2008]聚会

    传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=1787 http://www.lydsy.com/JudgeOnline/problem.ph ...

  6. [Ahoi2008]Meet 紧急集合

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MB http://www.lydsy.com/JudgeOnline/ ...

  7. 1787: [Ahoi2008]Meet 紧急集合

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 1482  Solved: 652 [Submit ...

  8. BZOJ 1787: [Ahoi2008]Meet 紧急集合

    BZOJ 1787: [Ahoi2008]Meet 紧急集合 题目描述 欢乐岛上有个非常好玩的游戏,叫做"紧急集合".在岛上分散有N个等待点,有N-1条道路连接着它们,每一条道路都 ...

  9. BZOJ 1787 [Ahoi2008]Meet紧急集合 题解与分析

    [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec   Memory Limit: 162 MB Description Input Output Sample Input ...

最新文章

  1. 2021年大数据Spark(四):三种常见的运行模式
  2. MATLAB reshape()函数和sub2ind()函数
  3. html5表格图片按比例缩放,JS图片等比例缩放方法完整示例
  4. Char.IsDigit与Char.IsNumber的区别[转]
  5. SAP CRM Fiori participant的图片显示调试全过程
  6. 异形3×3魔方还原教程_【初级篇】(四)最简单的三阶魔方入门教程——中层还原...
  7. asr语音转写_搜狗智能录音笔C1正式上市 语音转文字准确率达95%
  8. 高一信息技术 计算机配件的真伪辨别,高一信息技术组PPT.ppt
  9. nsinteger转float_int、NSInteger、NSNumber和NSString以及相互转换
  10. ToDesk安全流畅远控软件!
  11. linux 查看网卡厂商,linux下查看网卡信息的命令
  12. JavaScript 单例模式
  13. 利用BeautifulSoup爬取豆瓣高分电影排行榜
  14. Spring Security系列(三)——WebFlux配置方式以及多登陆入口实现
  15. 为保护其App Store,苹果不惜拉踩安卓:iOS比Android更安全!
  16. java http请求发送unicode_Java发送http请求
  17. 大学生学科竞赛管理网站系统、学科竞赛管理系统
  18. 7-44 莫尔斯码(Morse Code) (15分)
  19. python django怎么读_django的英文读法是什么
  20. 使用tftp32软件对思科交换机导入导出配置【思科交换机技能进阶2】

热门文章

  1. 使用 SciPy探索标准正态分布
  2. video-player [ 视频播放插件 ]
  3. 2021年中国移动游戏行业深度洞察报告:渠道变革买量兴起,存量争夺战愈演愈烈
  4. 计算机如何打开无线网络适配器,网络适配器无法启动如何解决?解决方法步骤...
  5. utils:常见的几种日期格式和转换方法
  6. R语言用load(xxx.Rdata)报错 bad restore file magic number (file may be corrupted) -- no data loaded
  7. PAT乙级 1012 数字分类 (20 分)
  8. 2021级天梯赛 2.1-2.4
  9. element修改el-table 表头的背景颜色横向渐变色 + 修改表头背景颜色
  10. php 206实现微信浏览器,PHP实现限制页面只能在微信自带浏览器访问的代码