nyist 42 一笔画问题(欧拉回路+并查集)
来源:互联网 发布:jquery 重新加载js 编辑:程序博客网 时间:2024/04/30 16:04
- 描述
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
#include<bits/stdc++.h>using namespace std;int t, n, m, sum, pre[1010], du[1010], v[1010][1010];void Init(int n){ for(int i = 1; i <= n; i++) pre[i] = i;}int Find(int x){ if(x!=pre[x]) pre[x]=Find(pre[x]);//寻找父节点 return pre[x];}int find(int x){ int i, j, r; i = x; r=Find(x); while(pre[i] != r) { j = pre[i]; pre[i] = r; i = j; } return pre[x];}int main(){ int x, y; scanf("%d",&t); while(t--) { scanf("%d%d", &n, &m); memset(v, 0, sizeof(v)); memset(du, 0, sizeof(du)); Init(n); for(int i = 1; i <= m; i++) { scanf("%d %d", &x, &y); int fx = find(x);//寻找X的父节点 int fy = find(y);//寻找y的父节点 if(fx != fy)//如果x的父节点不等于y的父节点 pre[fx] = fy;//将y的父节点变为x的父节点 if(v[x][y] == 0) { v[x][y] = 1; v[y][x] = 1; du[x]++;//记录度数 du[y]++; } } int ans = find(1);//1号的父节点 int flag = 1; for(int i = 2; i <= n; i++)// 判断是否是连通图 { int fx = find(i); if(fx != ans) { flag = 0; break; } } sum = 0; if(flag == 1) { for(int i = 1; i <= n; i++)// 若是连通图, 再判断节点度数为奇数共有几个 { if(du[i] % 2 == 1) sum++; } if(sum == 0 || sum == 2) printf("Yes\n"); else printf("No\n"); } else printf("No\n"); } return 0;}
0 0
- nyist 42 一笔画问题(欧拉回路+并查集)
- NYOJ42 一笔画问题 【欧拉回路】+【并查集】
- nyist-42一笔画问题(欧拉通路) bfs||dfs||并查集
- 南阳42 一笔画问题(欧拉回路+并查集)
- NYOJ 42 一笔画问题(并查集+欧拉回路)
- NYOJ 42 一笔画问题(DFS||并查集+欧拉回路)
- NYOJ 42 一笔画问题 (欧拉回路+并查集)
- nyist 42一笔画问题(并查集+欧拉图)
- NYOJ-一笔画问题(并查集+欧拉回路)
- nyoj42 一笔画问题(欧拉回路+并查集)
- nyoj 一笔画问题 【并查集+欧拉】
- nyoj42 一笔画问题 (欧拉回路)
- 欧拉回路解决一笔画问题
- 一笔画问题 【欧拉回路】+【dfs】
- nyoj42一笔画问题 【欧拉回路】
- NYOJ 题目42 一笔画问题 (欧拉连通图+并查集)
- NYOJ 42 一笔画问题(欧拉定理&&并查集)
- nyoj 42 一笔画问题(欧拉通路+dfs || 并查集)
- 字面量
- HDU2057 16进制的加法
- 第九周项目2---矩阵运算
- String,StringBuilder和StringBuffer的区别(一)
- R tutorial 12 - Simple linear regression 线性回归 (1)
- nyist 42 一笔画问题(欧拉回路+并查集)
- HDU2058 水题 数学题 几个数之和
- 改变现在教育同行的困扰,千万不要转发!
- Mysql Linux服务器上常用命令整理
- mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......)
- HDU2060 大水题 斯诺克
- hadoop 本机环境开发调试注意事项
- [Android]自定义锁屏并屏蔽按键
- 面向对象_内部类概述和访问特点