【題解】CSES 1130 Tree Matching

【題目敘述】https://cses.fi/problemset/task/1130/

#include <iostream>
#include <vector>
using namespace std;
 
int n, a, b, m[200005], ans;
vector <int> v[200005];
 
void dfs(int x, int pre){
    for (auto i:v[x]){
        if (i == pre) continue;
        dfs(i, x);
        if (!m[i] && !m[x]){
            m[i] = m[x] = 1;
            ans++;
        }
    }
}
 
int main() {
    cin >> n;
    for (int i = 1; i < n; i++){
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1, 0);
    cout << ans << "\n";
}
分享本文 Share with friends