NYoj42 一笔画问题

来源:互联网 发布:telnet的端口号是多少 编辑:程序博客网 时间:2024/04/29 23:11

一笔画问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述

zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。

规定,所有的边都只能画一次,不能重复画。

 

输入
第一行只有一个正整数N(N<=10)表示测试数据的组数。
每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P)
随后的Q行,每行有两个正整数A,B(0<A,B<P),表示编号为A和B的两点之间有连线。
输出
如果存在符合条件的连线,则输出"Yes",
如果不存在符合条件的连线,输出"No"。
样例输入
24 31 21 31 44 51 22 31 31 43 4
样例输出
NoYes


解题思路:由题意可知为欧拉图(当然我是参考了别人的才知道,呵呵...)
欧拉图:通过图(无向图或有向图)中所有边一次且仅一次行遍图中所有顶点的通路称为欧拉通路,通过图中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图
首先用数组构建无向图,然后记录同一结点出现的次数,用于判断是否为欧拉图
欧拉图的性质(无向图):
1.无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数);
2.无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点;
如果满足欧拉图性质,然后进行dfs,如果深搜次数等于顶点个数即为连通图。

#include<stdio.h>#include<string.h>int visit[1001],map[1001][1001],pd[1001];int p,q,count;void dfs(int v){    int j;//注意不能全局!    visit[v] = 1;    count++;    for(j=1;j<=p;j++)    {        if(map[v][j] && !visit[j])        {            //printf("%d %d\n",v,j);            //visit[v][j] = visit[j][v] = 1;            dfs(j);            //return;        }    }}int main(){int i,n,a,b;scanf("%d",&n);while(n--){memset(map,0,sizeof(map));memset(visit,0,sizeof(visit));memset(pd,0,sizeof(pd));scanf("%d%d",&p,&q);for(i=0;i<q;i++){  scanf("%d%d",&a,&b);  map[a][b] = map[b][a] = 1;  pd[a]++;//计算同一点出现的次数  pd[b]++;}count = 0;int sum = 0;for(i=1;i<=p;i++)        {            if(pd[i] % 2 != 0)//寻找结点出现奇数个               sum++;        }if(sum == 0 || sum == 2)//无向连通图G含有欧拉通路,当且仅当G有零个或两个奇数度的结点;{    dfs(1);//通过深搜判断是否连通    if(count == p)               printf("Yes\n");            else               printf("No\n");}else            printf("No\n");}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 word被锁定无法编辑怎么办 平衡车系统乱了怎么办 监控老是滴滴的响怎么办 磁盘已满 文件未保存怎么办 cocos只有代码没有项目怎么办 电脑系统管理员密码忘记了怎么办 魔兽小队不显示职业颜色怎么办 魔兽多余的橙装怎么办? f117-f6不读硬盘怎么办 中飞院飞行学生停飞了怎么办 军人对你敬礼时怎么办 小孩抱着就睡放下就醒怎么办 着火了怎么办 我的世界 生存战争2感冒了怎么办 生存战争2吐了怎么办 我的世界hqm重置怎么办 不小心打了110怎么办 我的世界皮肤有黑影怎么办 我的世界字体变大了怎么办 生锈的铁钉扎了怎么办 每天晚上窗纱上老有蝙蝠倒挂怎么办 我的世界没有痒怎么办 七日杀被ban了怎么办 吕框箱子上保护摸撕不掉怎么办 我的世界开光影卡怎么办 我的世界买不了怎么办 我的世界延迟高怎么办 我的世界过于昂贵怎么办 白色麻布染上别的颜色怎么办 印度老山檀香开裂了怎么办 专升本没过线怎么办 西安公租房小孩上学怎么办 全民k歌直播没人怎么办 在全民直播没人看怎么办 皮肤又黄又粗怎么办 被强制消费后应怎么办? 当保安不发工资怎么办? 辅警改革流管员怎么办 退伍证上照片毁了怎么办 辅警年龄大了怎么办 交警2小时不出警怎么办