nyoj-一笔画问题(欧拉图+并查集)
来源:互联网 发布:cs基地杀人案 知乎 编辑:程序博客网 时间:2024/04/30 08:08
nyoj原题
#include<stdio.h>#define Max 1001int father[Max];int rank[Max];void make_set(int x){ father[x]=x; rank[x]=0;}int find_set(int x){ if(father[x]!=x) father[x]=find_set(father[x]); return father[x];}int main(){ int T;int P,Q,a,b,i; scanf("%d",&T); while(T--) { int count=0; scanf("%d%d",&P,&Q); for(i=1;i<=P;i++) make_set(i); while(Q--) { scanf("%d%d",&a,&b); rank[a]++;rank[b]++; a=find_set(a);b=find_set(b); if(a!=b) father[a]=father[b]; } for(i=1;i<=P;i++) { if(find_set(i)==i) count++; if(count>1){ count=-1;break; } } if(count==-1) printf("No\n"); else{ count=0; for(i=1;i<=P;i++) if(rank[i]%2==1) count++; if(count==0||count==2) printf("Yes\n"); else printf("No\n"); } } return 0;
附加:判断欧拉图的条件:
1.图是连通的
2.奇节点(领边数为奇数)为2或0
并查集算法模板:
int father[MAX]; /* father[x]表示x的父节点*/ int rank[MAX]; /* rank[x]表示x的秩*/ /* 初始化集合*/ void Make_Set(int x) { father[x] = x; //根据实际情况指定的父节点可变化 rank[x] = 0; //根据实际情况初始化秩也有所变化 } /* 查找x元素所在的集合,回溯时压缩路径*/ int Find_Set(int x) { if (x != father[x]) { father[x] = Find_Set(father[x]); //这个回溯时的压缩路径是精华 } return father[x]; } /* 按秩合并x,y所在的集合 下面的那个if else结构不是绝对的,具体<strong>根据实际情况</strong>变化 但是,宗旨是不变的即,按秩合并,实时更新秩。 */ void Union(int x, int y) { x = Find_Set(x); y = Find_Set(y); if (x == y) return; if (rank[x] > rank[y]) { father[y] = x; rank[x] += rank[y]; }else { if (rank[x] == rank[y]) { rank[y]++; } father[x] = y; } }
1 0
- NYOJ 42 一笔画问题 【欧拉图 + 并查集】
- nyoj-一笔画问题(欧拉图+并查集)
- NYOJ--42一笔画问题【并查集】
- 并查集 深搜 nyoj 42 一笔画问题
- nyoj--42--一笔画问题(并查集)
- NYOJ 42 一笔画问题 (DFS || 并查集)
- nyoj 一笔画问题 【并查集+欧拉】
- nyoj 一笔画问题(并查集,欧拉路)
- nyoj 一笔画(并查集)
- nyist 42一笔画问题(并查集+欧拉图)
- 一笔画问题(nyoj42)(并查集+欧拉图)
- 一笔画问题(并查集+无向欧拉图)
- nyoj 一笔画(含并查集详解)
- 欧拉路/回路_并查集 NYOJ 42 一笔画问题
- NYOJ 题目42 一笔画问题 (欧拉连通图+并查集)
- NYOJ 42 一笔画问题(并查集+欧拉回路)
- NYOJ 42 一笔画问题(DFS||并查集+欧拉回路)
- NYOJ 42 一笔画问题(欧拉定理&&并查集)
- S3C2440之LCD的初始化配置
- Kinect和U3d结合开发基础之基本的动作识别
- nrf51822 --- 主机主动断开蓝牙
- [hdu 5671][BestCoder Round #81 t2] Matrix
- 大牛教你如何学习Web前端开发
- nyoj-一笔画问题(欧拉图+并查集)
- gprs经常断开重连
- 准确率,召回率和F1值
- GreenDao 在 Android Studio 中的配置使用 之 更新数据库
- Linux下把Gedit变成全能的CI开发利器
- Android源码代理模式---Binder
- 内部类的.this和.new
- java自制服务器与客户端(Sock)
- 先从制作操作系统启动盘开始吧