有mm 个询问,每个询问给出了一对节点的编号 xx和yy,询问xx与yy 的祖孙关系。 输入格式 输入第一行包括一个整数 nn 表示节点个数; 接下来 nn 行每行一对整数对 aa 和bb 表示aa 和bb之间有连边。如果 bb 是−1−1,那么 aa就是树的根; 第n+2n+2行是一个整数mm 表示询问个数; 接下来mm行,每...
LOJ10135 祖孙询问 题目描述 已知一棵n个节点的有根树。有m个询问,每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。 输入格式 输入第一行包括一个整数n表示节点个数; 接下来n行每行一对整数对a和b表示a和b之间有连边。如果b是−1,那么a就是树的根; 第n+2行是一个整数m表示询问个数; 接下...
有m 个询问,每个询问给出了一对节点的编号 x 和y,询问 x 与y 的祖孙关系。 对于每一个询问,若x 是y的祖先则输出 1,若 y 是x 的祖先则输出 2,否则输出 0。 解题思路 显然这题可以转化为:(记p 为x 和y的最近公共祖先),如果x=p输出1,如果y=p输出2,否则输出0,然后就可以用倍增求LCA了 倍增 #in...
「NOIP模拟赛」祖孙询问 「问题描述」 已知一棵n个节点的有根树。有m个询问。每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。 「输入格式」 输入第一行包括一个整数n表示节点个数。 接下来n行每行一对整数对a和b表示a和b之间有连边。如果b是-1,那么a就是树的根。 第n+2行是一个整数m表示...
int n; int root; void add(int a,int b) { e[idx]=b,ne[idx]=h[a],h[a]=idx++; } void bfs() { queue<int> q; q.push(0); dp[0]=0; while(q.size()) { int t=q.front(); q.pop(); for(int i=h[t];~i;i=ne[i]) { int...
已知一棵 n 个节点的有根树。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。 输入格式 输入第一行包括一个整数 n 表示节点个数; 接下来 n 行每行一对整数对 a 和 b 表示 a 和 b 之间有连边。如果 b 是 −1,那么 a 就是树的根; ...
祖孙询问难度级别:C; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B试题描述已知一棵n个节点的有根树。有m个询问。每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。 输入输入第一行包括一个整数n表示节点个数。接下来n行每行一对整数对a和b表示a和b之间有连边。如果b是-1...
AcWing 1172 祖孙询问 一、最近公共祖先 (\(Lowest\) \(Common\) \(Ancestors\)),简称\(LCA\)。对于一棵有根树,一个节点到根结点路径上所有的节点都被称为这个节点的祖先节点,祖先节点中除节点自身外的节点也被称为真祖先节点。对于树上的两个不同节点\(u\)和\(v\),其祖先节点必然有一些是重合的,...
【JZOJ3054】祖孙询问【LCA】 题目大意: 题目链接:https:///senior/#main/show/3054 给出一棵有根树,询问xxx和yyy的祖孙关系。 思路: 水题。 直接求一遍lcalcalca,然后如果lcalcalca是xxx或yyy中的一个,那么xxx和yyy就是有祖孙关系的,否则就没有祖孙关系。
已知一棵nnn个节点的有根树。有mmm个询问,每个询问给出了一对节点的编号xxx和yyy,询问xxx与yyy的祖孙关系。 输入格式 输入第一行包括一个整数nnn表示节点个数; 接下来nnn行每行一对整数对aaa和bbb表示aaa和bbb之间有连边。如果bbb是−1-1−1,那么aaa就是树的根; ...