// this is code
signed main()
{
int N;
cin >> N;
vector<vector<int> > T(N);
vector<int> degree(N, 0);
for (int i = 0; i < N - 1; ++i)
{
int u, v;
cin >> u >> v;
u--;
v--;
T[u].push_back(v);
T[v].push_back(u);
degree[u]++;
degree[v]++;
}
int result = N;
for (int u = 0; u < N; ++u)
{
int x=degree[u];
vector<int> k;
for(int i=0;i<T[u].size();i++)
{
k.push_back(degree[T[u][i]]);
}
sort(k.begin(),k.end());
//pvec(k);
int y;
for(int i=0;i<k.size();i++)
{
y=k[i]-1;
int z=k.size()-i;
result=min(result,N-(1+z+z*y));
//cout<<result<<" ";
}
cout<<endl;
}
cout << result << endl;
return 0;
}
I just did the problem E found it easy and fun !!