Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long
- #define INF 1000000007
- #define EPS 0.000001
- #define f first
- #define s second
- #define in(n) scanf("%lld", &n)
- #define ina(arr,n) for(ll x = 0; x < n; x++) in(arr[x]);
- #define loop(i,n) for(ll i=0;i<n;i++)
- #define leep(i,n) for(ll i=1;i<=n;i++)
- using namespace std;
- vector <ll>vec[112345];
- ll dp[112345];
- void dfs(ll node,ll parent){
- for(auto x:vec[node]){
- if(x!=parent){
- dfs(x,node);
- dp[node]+=dp[x];
- }
- }
- dp[node]++;
- }
- int main(){
- ll node,edge;
- cin>>node;
- edge=node-1;
- loop(i,(node-1)){
- ll x,y;
- in(x);
- in(y);
- vec[x].push_back(y);
- vec[y].push_back(x);
- }
- ll leaf=0;
- for(ll i=1;i<=node;i++){
- if(vec[i].size()==1){
- leaf=i;
- break;
- }
- }
- dfs(leaf,-1);
- ll ans=0;
- for(ll i=1;i<=node;i++){
- if(!(dp[i]&1)&&(vec[i].size()!=1)){
- ans++;
- }
- }
- if(node%2==0)
- cout<<ans<<endl;
- else
- cout<<-1<<endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment