zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。
规定,所有的边都只能画一次,不能重复画。
2 4 3 1 2 1 3 1 4 4 5 1 2 2 3 1 3 1 4 3 4
No Yes
#include
#include
#include
using namespace std;
int m,n,cnt,odd;
int map[1001][1001];
int visit[1001];
void BFS(int n)
{
queueq;
int i,t,num;
q.push(1);
visit[1]=1;
while(!q.empty())
{
t=q.front();
q.pop();
cnt++;
num=0;
for(i=1;i<=n;i++)
{
if(map[t][i])
{
if(!visit[i])
{
q.push(i);
visit[i]=1;
}
num ++;
}
}
if(num&1)
odd ++;
}
}
int main()
{
int num,x,y,r;
scanf("%d",&num);
while(num--)
{
memset(map,0,sizeof(map));
memset(visit,0,sizeof(visit));
cnt = odd = 0;
scanf("%d%d",&n,&m);
while(m--)
{
scanf("%d%d",&x,&y);
map[x][y] = map[y][x] = 1;
}
BFS(n);
if((n == cnt)&&((odd == 0)||( odd==2 )))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}