通过观察我发现一个规律:
答案=树的末梢叶子数量-1
然后我就开了个数组用于记录每个节点链接其他点的数量,如果这个点只有一个链接,那么就是末梢。
秉持着上面的思想,再加上特判,代码能达到95的分数,但是测试点4一直爆WA。
想知道为什么测试点4会爆,orz 代码附上:
/*luogumxT559325 【MX-X15-T2】系绳绳*/
#include <iostream>
#include <cstring>
const int N = 2e5+5;
using namespace std;
int main() {
int a[N];
int t;
cin >> t;
while (t--) {
memset(a, 0, sizeof a);
int n;
cin >> n;
for (int i = 1; i <= n - 1; i++) {
int u = 0, v = 0;
cin >> u >> v;
a[u]++;
a[v]++;
}
if (n <= 2) {
cout << 0 << endl;
continue;
}
int ans = 0;
for (int i = 1; i <= n; i++) {
if (a[i] == 1) {
ans++;
}
}
cout << ans - 1 << endl;
}
return 0;
}