题解 CF216B 【Forming Teams】

· · 题解

#include<bits/stdc++.h>
using namespace std;

int t[111],s[111],a,b,c,d,x,y;
int n=0;

int f(int p)
{
    return p==t[p] ? p : f(t[p]);
}

int main()
{
    cin>>a>>b;
    for(int i=0;i<=a;i++)
    {
        t[i]=i,s[i]=1;
    }

    while(b--)
    {
        cin>>c>>d;
        x=f(c),y=f(d);
        if(x==y&&(s[x]&1))
            n++;
        t[y]=t[x],s[x]+=s[y];
    }

    if((a-n) & 1)
    {
        n++;
    }
    cout<<n;
    return 0;
}