# include<stdio.h>
# include<string.h>
int map[1005][1005],flag[1005],du[1005];
void dfs(int n,int cur)
{
int i;
for(i=1;i<=n;i++)
{
if(map[cur][i]&&!flag[i]&&cur!=i)
{
flag[i]=1;
dfs(n,i);
}
}
}
int main()
{
int n,p,q,i,a,b,f,count;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&p,&q);
f=0;
memset(map,0,sizeof(map));
memset(du,0,sizeof(du));
for(i=0;i<q;i++)
{
scanf("%d%d",&a,&b);
map[a][b]=1;
map[b][a]=1;
du[a]++;
du[b]++;
}
memset(flag,0,sizeof(flag));
flag[1]=1;
dfs(p,1);
for(i=1;i<=p;i++)
{
if(!flag[i])
{
f=1;
break;
}
}
count=0;
for(i=1;i<=p;i++)
{
if(du[i]%2)
count++;
}
if(f)
{
printf("No\n");
}
else
{
if(count==2||count==0)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
欧拉图+dfs
最新推荐文章于 2024-05-09 15:18:37 发布