Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;const int maxn = 100005;int n, m, K, fa[maxn][19];int dep[maxn];vector<int> g[maxn];void dfs(int x, int f){fa[x][0] = f;dep[x] = dep[f]+1;for(vector<int>::iterator it = g[x].begin() ; it != g[x].end() ; ++it)if(*it != f)dfs(*it, x);}void init(){scanf("%d %d", &n, &m);for(int i = 1 ; i < n ; ++i){int x, y;scanf("%d %d", &x, &y);g[x].push_back(y);g[y].push_back(x);}memset(dep, 0, sizeof(dep));dfs(1, 1);for(int k = 1 ; (1<<k) < n ; ++k)