做法:欧拉路中要么每个点的度数都是偶数,要么,只有两个度数为奇数的点。
#include <iostream>
#include <cstring>
#include <cstdio>
const int LMT=100003;
using namespace std;
int du[LMT];
int main()
{
int T,n,m;
scanf("%d",&T);
while(T--)
{
memset(du,0,sizeof(du));
int u,v,ans=0;
scanf("%d%d",&n,&m);
while(m--)
{
scanf("%d%d",&u,&v);
du[u]++;du[v]++;
}
for(int i=1;i<=n;i++)
ans+=du[i]%2;
ans=(ans-2)>>1;
if(ans<0)ans=0;
printf("%d\n",ans);
}
return 0;