hihoCoder 树结构判定(并查集)
2017-08-01 09:47
344 查看
思路:树满足两个条件:
1、顶点数等于边数加一
2、所有的顶点在一个联通块
那么直接dfs或者并查集就可以了。
AC代码
如有不当之处欢迎指出!
1、顶点数等于边数加一
2、所有的顶点在一个联通块
那么直接dfs或者并查集就可以了。
AC代码
#include <stdio.h> #include<string.h> const int maxn = 500+5; int par[maxn]; int T, n, m; void init() { for(int i = 0; i <= n; i++) { par[i] = i; } } int findRoot(int x) { return x == par[x] ? x : par[x] = findRoot(par[x]); } int main() { scanf("%d", &T); while(T--) { scanf("%d%d", &n, &m); init(); int u, v; for(int i = 0; i < m; i++) { scanf("%d%d", &u, &v); int x = findRoot(u); int y = findRoot(v); if(x != y) { par[x] = y; } } bool ok = 1; if(n-1 != m) ok = 0; //判断是否所有点连通 if(ok) { int root = findRoot(1); for(int i = 2; i <= n; i++) { if(findRoot(i) != root) { ok = 0; break; } } } if(ok) printf("YES\n"); else printf("NO\n"); } return 0; }
如有不当之处欢迎指出!
相关文章推荐
- hihoCoder 1322 : 树结构判定 (dfs 或 并查集)
- hihoCoder 1322:树结构判定
- [HIHO1322]树结构判定(并查集)
- [hihocoder1322] 树结构判定
- 【hihocoder1291 微软2016校园招聘4月在线笔试D】【逆序思维 并查集】Buiding in Sandbox 我的世界建方块合法性判定
- HihoCoder 1121二分图一•二分图判定
- hihocoder 1066 无间道(基础并查集)
- 数据结构作业——山海经(带权并查集)
- hihoCoder - 1121 - 二分图判定
- 树形结构实现并查集
- hihocoder1066-并查集
- POJ 1308 Is It A Tree? && NYOJ 129 (树的判定+并查集)
- 数据结构与算法-链表-判定给定的链表是以null结尾,还是形成一个环
- hihoCoder 1066 : 无间道之并查集
- 20131030: 森林结构的运用(poj: 树的转换,电话号码,物质分解记录);带权并查集(食物链);C++输入;map的基本使用
- 并查集 数据结构
- hihocoder1066 并查集
- 树的判定 并查集
- hihoCoder 1121 二部图判定
- [hihocoder1066]无间道之并查集