无向图: 度数为偶数,且联通
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#define MAX 0x3f3f3f
using namespace std;
int d[1100];
int f[1100];
int fd(int x)
{
return f[x] == x? x: f[x] = (fd(f[x]));
}
void check(int x, int y)
{
int xx = fd(x);
int yy = fd(y);
if(xx != yy)
{
f[xx] = yy;
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n, m;
scanf("%d%d",&n,&m);
for(int i = 0; i <= n; i++)
f[i] = i;
while(m--)
{
int u, v;
scanf("%d%d",&u,&v);
d[u]++;
d[v]++;
check(u,v);
}
int flag = 0;
for(int i = 1; i <= n; i++)///度数为偶数,无向图
{
if(d[i]%2)
{
flag = 1;
break;
}
}
int cnt = 0;
for(int i = 1; i <= n; i++)//联通
{
if(f[i] == i)
{
cnt++;
}
}
if(cnt != 1)
{
flag = 1;
}
if(!flag)
{
cout<<"1"<<endl;
}
else
cout<<"0"<<endl;
}
return 0;
}