树上游走(寒假集训终结考试题)
发布时间
阅读量:
阅读量
题目描述
#include<bits/stdc++.h>
using namespace std;
const int MAXN=10000000;
int n,m;
vector< int > a[MAXN];
int p[MAXN][25],deep[MAXN],size[MAXN],f;
double ans[MAXN];
void dfs(int x,int dep)
{
for(int i=1;i<=22;i++)
p[x][i]=p[p[x][i-1]][i-1];
deep[x]=dep;
size[x]=1;
for(int i=0;i<a[x].size();i++)
{
int y=a[x][i];
if(y==p[x][0]) continue;
p[y][0]=x;
dfs(y,dep+1);
size[x]+=size[y];
}
}
inline int lca(int i,int j)
{
int k;
if(deep[i]<deep[j]) swap(i,j);
if(deep[i]>deep[
全部评论 (0)
还没有任何评论哟~
