Problem: 2063C - Remove Exactly Two
Language: C++17 (GCC 7-32)

Previous submission (verdict: Wrong answer on test 2):
#include<bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;

int const N = 100005;
int edges[N];
int vis[N];


// int dfs(int cur, vector<int>v[])
// {
//     vis[cur] = 1;
    
//     for(int i = 0 ; i < v[cur].size() ; i++)
//     {
//         int child = v[cur][i];
//         if(vis[child] == 0)
//         {
//             dfs(child, v);
//             edges[child] += 1;
//         }
//     }
    
// }

signed main()
{
    int t = 1;
    cin>>t;
    while(t--)
    {
        int n ; cin >> n;
        vector<int>v[n+2];
        int b[n+2] = {0};
        int ans = 0;
        
        for(int i = 1 ; i < n ; i++)
        {
            int x, y;
            cin >> x >> y;
            v[x].pb(y);
            v[y].pb(x);
            b[x] += 1;
            b[y] += 1;
        }
        
        vector<pair<int, int>>a;
        for(int i = 1 ; i <= n ; i++)
        {
            int sz = v[i].size();
            a.pb({sz, i});
        }
        
        int mx = 0;
        int node = 0;
        for(int i =1 ; i <= n ; i++) {
            if(b[i] > mx)  {
                mx = b[i];
                node = i;
            }
        }
        
        for(int i = 0 ; i< v[node].size(); i++) {
            b[v[node][i]] -= 1; 
        }
        b[node] = -1;
        
        // cout << node << " " << mx << "\n";
        
        ans += mx;
        mx = 0;
        for(int i = 1 ; i <= n ; i++) {
            if(b[i] > mx)  {
                mx = b[i];
                node = i;
            }
        }
        
        // cout << node << " " << mx << "\n";
        
        ans += mx;
        
        // sort(a.begin(), a.end(), greater<>());
        
        
        // int ans = 0;
        // int f = 0;
        // int pre_node = 0;
        // int cnt = 0;

        // for(int i = 0; i < a.size(); i++)
        // {
        //     int sz = a[i].first, node_val = a[i].second;
        //     cout << sz << " " << node_val << endl;
        //     if( f == 0) {
        //         ans += sz;
        //     }
        //     else {
        //         int last_ans = 0;
        //         for(int j = 0 ; j < v[i].size(); j++) {
        //             if(v[i][j] == pre_node) last_ans = sz - 1;
        //         }
                
        //         if(sz > last_ans) ans += sz;
        //         else ans += last_ans;
                
        //     }
        //     cnt += 1;
        //     if(cnt == 3) break;
        // }
        
        // memset(edges, 0, sizeof(edges));
        // memset(vis, 0, sizeof(vis));

        ans -= 1;
        cout << ans << "\n";
        
    }
}





Submission (verdict: Wrong answer on test 4):
#include<bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;

int const N = 100005;

signed main()
{
    int t = 1;
    cin>>t;
    while(t--)
    {
        int n ; cin >> n;
        vector<int>v[n+2];
        int b[n+2] = {0};
        int ans = 0;
        
        for(int i = 1 ; i < n ; i++)
        {
            int x, y;
            cin >> x >> y;
            v[x].pb(y);
            v[y].pb(x);
            b[x] += 1;
            b[y] += 1;
        }
        
        vector<pair<int, int>>a;
        for(int i = 1 ; i <= n ; i++)
        {
            int sz = v[i].size();
            a.pb({sz, i});
        }
        
        int mx = 0;
        int node = 0;
        for(int i =1 ; i <= n ; i++) {
            if(b[i] >= mx)  {
                mx = b[i];
                node = i;
            }
        }
        
        for(int i = 0 ; i< v[node].size(); i++) {
            b[v[node][i]] -= 1; 
        }
        b[node] = -1;
        
        // cout << node << " " << mx << "\n";
        
        ans += mx;
        mx = 0;
        for(int i = 1 ; i <= n ; i++) {
            if(b[i] > mx)  {
                mx = b[i];
                node = i;
            }
        }
        
        // cout << node << " " << mx << "\n";
        
        ans += mx;
        
        
        ans -= 1;
        cout << ans << "\n";
        
    }
}