解:
2025-03-22 11:37:59
发布于:广东
0阅读
0回复
0点赞
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<vector<int>>edges;
vector<int>parent;
int cut_count=0;
int dfs(int u){
int size = 1;
for (int v : edges[u]) {
if (v != parent[u]) {
parent[v] = u;
size += dfs(v);
}
}
if (size == 3) {
cut_count++;
return 0;
}
return size;
}
int main() {
int n;
cin >> n;
if (n % 3 != 0) {
cout << -1 << endl;
return 0;
}
edges.resize(n + 1);
parent.resize(n + 1, -1);
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
edges[u].push_back(v);
edges[v].push_back(u);
}
if (dfs(1) != 0) {
cout << -1 << endl;
} else {
cout << cut_count - 1 << endl;
}
return 0;
}
欢迎参考
开心点
这里空空如也
有帮助,赞一个