给你一棵树
让你进行切割
问你最多能切多少刀 使得每个连通分量size都是偶数
思路:首先 要是有奇数个节点的话 那么不管你怎么切割 都会有一个连通分量的size是奇数
所以只有偶数的情况才可能进行切割
切割的话 只要切割size为偶数的节点就行 把size为偶数的节点和他的父节点切开 就能保证连通分量的size为偶数
dfs一下就过了
#include#include #include #include #include using namespace std;const int maxn = 1e5+5;vector g[maxn];bool vis[maxn];int ans=0;int dfs(int u);int main(){ int n,i,j,k; scanf("%d",&n); if(n%2) { printf("-1\n"); return 0; } memset(vis, false, sizeof(vis)); for(i=0;i