#include<bits/stdc++.h>
using namespace std;
int uf[1050];
int de[1005];
int find0(int x)
{
int r=x;
while(uf[r]!=r)
r=uf[r];
int i=x,j;
while(i!=r)
{
j=uf[i];
uf[i]=r;
i=j;
}
return r;
}
int union0(int x,int y)
{
int rx=find0(x),ry=find0(y);
if(rx!=ry)
uf[rx]=ry;
}
int ju(int v)
{
int root=0;
for(int i=1; i<=v; i++)
if(uf[i]==i)
root++;
if(root!=1)
return 0;
for(int i=1; i<=v; i++)
if(de[i]%2==1)
return 0;
return 1;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int v,e;
scanf("%d%d",&v,&e);
for(int i=1; i<=v; i++)
uf[i]=i;
memset(de,0,sizeof(de));
for(int i=0; i<e; i++)
{
int v1,v2;
scanf("%d%d",&v1,&v2);
union0(v1,v2);
de[v1]++;
de[v2]++;
}
if(ju(v))printf("1\n");
else printf("0\n");
}
}
SDUT3364数据结构实验之图论八:欧拉回路
最新推荐文章于 2020-10-28 20:24:15 发布