NYIST OJ 题目42 一笔画问题
2015-06-22 10:23
344 查看
水题。无向图欧拉通路的判定。用并查集判定是不是连通图!
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn = 1000 + 10; int tott[maxn]; int father[maxn]; int find(int x) { if (x != father[x]) father[x] = find(father[x]); return father[x]; } int main() { int T; scanf("%d", &T); while (T--) { int i, n, m, u, v; scanf("%d%d", &n, &m); for (i = 0; i <= n; i++) father[i] = i; memset(tott, 0, sizeof(tott)); for (i = 0; i < m; i++) { scanf("%d%d", &u, &v); int fu = find(u); int fv = find(v); if (fu != fv) father[fu] = fv; tott[u]++; tott[v]++; } int ji = 0, ou = 0; for (i = 1; i <= n; i++) { if (tott[i] == 0) continue; if (tott[i] % 2 == 0) ou++; else ji++; } int jieguo = 0; int th = find(1); for (i = 2; i <= n; i++) { int tg = find(i); if (tg != th) break; } if (i == n + 1) jieguo = 1; if (jieguo == 1) { if (ji == 0 || ji == 2) jieguo = 1; else jieguo = 0; } if (jieguo == 1) printf("Yes\n"); else printf("No\n"); } return 0; }
相关文章推荐
- BRD,MRD,PRD
- 2015/6/5站立会议(补发)
- C++可怜的内存管理机制漫谈及奇怪补救auto_ptr介绍
- interface Gazebo and ROS.
- Tmux 速成教程:技巧和调整
- notepad++ 联想输入 如何关掉
- 数据持久化的四种方式
- 2015/6/6站立会议(补发)
- 《Artech的WCF技术剖析系列》系列技术文章整理收藏
- 四月是你的谎言 四月は君の嘘 感動の最終回 22 かをりの手紙書
- 字符串,二进制数据的互转
- [C++ primer]第三章笔记--字符串、向量和数组
- 九宫格算法
- 搭建XMPP协议,实现自主推送消息到手机
- Import SQL into MySQL with a progress meter
- HotSpot的算法实现
- 进程地址空间
- 2015/6/7站立会议(补发)
- 给博士生的话:如何选择研究方向
- 使用chrome的devtool工具追踪执行过的文件