#include #include #include using namespace std; const int INF = 1e8; void dfs(vector>& G, int pos, int last, vector& leaf){ bool has_child = false; for(int i=0; i> n; vector> G(n); for(int i=0; i> x >> y; x--; y--; G[x].push_back(y); G[y].push_back(x); } vector leaf; dfs(G, 0, -1, leaf); vector dist(n, INF); queue> q; q.push({0,0}); dist[0] = 0; for(int i=0; i d+1){ dist[G[pos][i]] = d+1; q.push({G[pos][i], d+1}); } } } for(int i=0; i