T70136 点的距离
给定一棵n个点的树,Q个询问,每次询问点x到点y两点之间的距离。
输入输出格式
输入格式:
第一行一个正整数n,表示这棵树有n个节点;
接下来n−1行,每行两个整数x,y,表示 x,y之间有一条连边; 然后一个整数Q,表示有Q个询问;
接下来Q行,每行两个整数x,y表示询问x到y的距离。
输出格式:
输出Q行,每行表示每个询问的答案。
输入输出样例
输入样例#1:
6
1 2
1 3
2 4
2 5
3 6
2
2 6
5 6
输出样例#1:
3
4
说明
【数据范围】
对于全部数据,1≤n,m,Q≤10^5 ;1≤x,y≤n。
#include<bits/stdc++.h>
using namespace std;
const int N=100009;
int n,q,x,y,first[N*2],next[N*2],to[N*2],dep[N],f[N][21],tot;
void add(int u,int v)
{
next[++tot]=first[u];first[u]=tot;to[tot]=v;
next[++tot]=first[v];first[v]=tot;to[tot]=u;
}
void Init(int u,int father)
{
dep[u]=dep[father]+1;
for(int i=0;i<&