题意:给一棵树,问删两个节点,最多可以多几棵树。
思路:数据只有5e3,暴力枚举,但注意当我们删掉了两个相邻节点则需要减去一。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 5e3 + 10;;
int n, ma, v[N], mp[N][N];
int main() {
cin >> n;
for(int x, y, i = 1; i < n; i++) {
cin >> x >> y;
mp[x][y] = 1;
v[x]++;
}
for(int i = 1; i <= n; i++) {
for(int j = i + 1; j <= n; j++) {
int m = 0;
m = v[i] + v[j];
if(mp[i][j]) {
m--;
}
ma = max(ma, m);
}
}
cout << ma;
return 0;
}