#include<bits/stdc++.h> using namespace std; #define maxn 200005 int ans,n,u,v; vector <int> mmp[maxn]; int siz[maxn]; void dfs(int u,int pre) { siz[u]=1; for(int i=0; i<mmp[u].size(); i++) { if(mmp[u][i]!=pre) { dfs(mmp[u][i],u); siz[u]+=siz[mmp[u][i]]; } } if(siz[u]%2==0) { ans++; siz[u]=0; } } int main() { cin>>n; int m=n-1; while(m--) { cin>>u>>v; mmp[u].push_back(v); mmp[v].push_back(u); } if(n%2==1) cout<<-1<<endl; else { dfs(1,-1); cout<<ans-1<<endl; } return 0; }
C - Cut 'em all! (对树进行DFS切割)
猜你喜欢
转载自blog.csdn.net/BePosit/article/details/81540589
今日推荐
周排行