#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
using namespace std;
const int M=1e5+5;
int fa[M],in[M],a[M],b[M];
int get(int x){
if(fa[x]==0) return x;
return fa[x]=get(fa[x]);
}
int main(){
int n,m;
while(scanf("%d %d",&n,&m)!=EOF){
memset(in,0,sizeof(in));
memset(fa,0,sizeof(fa));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int cnt=0;
for(int i=1;i<=m;i++){
int u,v;
scanf("%d %d",&v,&u);
in[v]++,in[u]++;
u=get(u),v=get(v);
if(u!=v) fa[v]=u;
}
for(int i=1;i<=n;i++){
if(get(i)==i) cnt++;
}
for(int i=1;i<=n;i++){
a[get(i)]++;
if(in[i]%2==1) b[get(i)]++;
}
int ans=0;
for(int i=1;i<=n;i++){
if(a[i]<=1) continue;
else if(b[i]==0) ans++;
else if(b[i]>0) ans+=b[i]/2;
}
printf("%d\n",ans);
}
return 0;
}
一本通1530:Ant Trip
最新推荐文章于 2024-07-09 12:01:04 发布