hzwer 模拟题 祖孙询问
题目描述
已知一棵n个节点的有根树。有m个询问。每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。
输入输出格式
输入格式:
输入第一行包括一个整数n表示节点个数。 接下来n行每行一对整数对a和b表示a和b之间有连边。如果b是-1,那么a就是树的根。 第n+2行是一个整数m表示询问个数。 接下来m行,每行两个正整数x和y。
输出格式:
对于每一个询问,如果x是y的祖先,输出1;如果y是x的祖先,输出2;否则输出0。
输入输出样例
10
234 -1
12 234
13 234
14 234
15 234
16 234
17 234
18 234
19 234
233 19
5
234 233
233 12
233 13
233 15
233 19
1
0
0
0
2
说明
对于30%的数据,n, m ≤ 1000。
对于100%的数据,n, m ≤ 40000,每个节点的编号都不超过40000。
思路:求出两点的LCA后,若其中有一个点为LCA,则这个点为另一个点的祖先,输出 1 或 2,反之,输出 0
#include<cstdio>
#include<algorithm> const int N=;
int n,m,tot,root,fa[N],ans[N],head[N],_head[N];
struct Edge{
int v,nxt;
}edge[N<<];
struct EDge{
int x,v,nxt,id;
}_edge[N<<]; inline int read()
{
int n=,w=;register char c=getchar();
while(c<''||c>''){if(c=='-')w=-;c=getchar();}
while(c>=''&&c<='')n=n*+c-'',c=getchar();
return n*w;
} int find(int x)
{return fa[x]==x?fa[x]:fa[x]=find(fa[x]);} inline void add(int u,int v)
{edge[++tot]=(Edge){v,head[u]};head[u]=tot;}
inline void _add(int x,int u,int v,int i)
{_edge[++tot]=(EDge){x,v,_head[u],i};_head[u]=tot;} bool vis[N];
void dfs(int now)
{
vis[now]=true;
for(int v,i=head[now];i;i=edge[i].nxt)
if(!vis[v=edge[i].v])
dfs(v),fa[v]=now;
for(int x,i=_head[now];i;i=_edge[i].nxt)
if(vis[_edge[i].v])
{
x=find(_edge[i].v);
if(x==now)
ans[_edge[i].id]=(now==_edge[i].x?:);
}
} int main()
{
n=read();
for(int i=;i<=N;++i)
fa[i]=i;
for(int u,v,i=;i<=n;++i)
{
u=read(),v=read();
if(v==-)
root=u;
else add(u,v),add(v,u);
}
tot=;m=read();
for(int x,y,i=;i<=m;++i)
{
x=read(),y=read();
_add(x,x,y,i),_add(x,y,x,i);
}
dfs(root);
for(int i=;i<=m;++i)
printf("%d\n",ans[i]);
return ;
}
hzwer 模拟题 祖孙询问的更多相关文章
- 8.3-8.4NOIP模拟题总结
一:成绩 Day1 score=100+100+20 Day2 score=100+30+0 这成绩还是不行啊,仍需继续加油(抱怨一句暴力分有点少#滑稽) 二:题目分析 Day1 T1祖孙询问: 已知 ...
- NOIP模拟题汇总(加厚版)
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...
- Capture the Flag ZOJ - 3879(模拟题)
In computer security, Capture the Flag (CTF) is a computer security competition. CTF contests are us ...
- poj 1008:Maya Calendar(模拟题,玛雅日历转换)
Maya Calendar Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64795 Accepted: 19978 D ...
- poj 1888 Crossword Answers 模拟题
Crossword Answers Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 869 Accepted: 405 D ...
- CodeForces - 427B (模拟题)
Prison Transfer Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)
The Android University ACM Team Selection Contest Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里 ...
- 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer. ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
随机推荐
- Object-c Associated Object
oc的关联的作用在我看来就是将两个对象关联起来,用的时候通过key和对象把和这个对象关联的对象再取出来(我做的项目就是和UITableView里面的一个属性关联起来了) 举个栗子: - (void)v ...
- Unity 内置Shader变量、辅助函数等
一:标准库里的常用.cginc文件 HLSLSupport.cginc - (automatically included) Helper macros and definitions for cro ...
- AngularJs轻松入门(三)MVC架构
MVC应用程序架构最早于1970年起源于Smalltalk语言,后来在桌面应用程序开发中使用较为广泛,如今在WEB开发中也非常流行.MVC的核心思想是將数据的管理(Model).业务逻辑控制(Cont ...
- Android中的Junit测试
在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...
- Redis缓存Mysql模拟用户登录Java实现实例
https://blog.csdn.net/suneclipse/article/details/50920396
- App开发Native.js入门指南
概述 Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术.如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展 ...
- [USACO14FEB]路障Roadblock
题目:洛谷P2176. 题目大意:有n个点m条无向边,一个人要从1走到n,他会走最短路.现在可以让一条边的长度翻倍,求翻倍后这个人要多走多少距离. 解题思路:首先可以知道,翻倍肯定是在最短路上的某条边 ...
- Vuex-一个专为 Vue.js 应用程序开发的状态管理模式
为什么会出现Vuex 非父子关系的组件如何进行通信?(Event Bus)bus.js import Vue from 'vue'; export default new Vue(); foo.vue ...
- 认识Vue组件
前言 Vue.js是一套构建用户界面的渐进式框架(官方说明).通俗点来说,Vue.js是一个轻量级的,易上手易使用的,便捷,灵活性强的前端MVVM框架.简洁的API,良好健全的中文文档,使开发者能够较 ...
- python Web抓取(二)selenium模块的使用、对浏览器的按键操作及错误处理
建议以下帖子: 教你在Windows上搭建Python+Selenium环境:https://blog.csdn.net/huilan_same/article/details/52888262 py ...