POJ1308 - Is It A Tree? (并查集)
来源:互联网 发布:串口调试助手软件 编辑:程序博客网 时间:2024/06/05 00:13
题目链接
思路
要想构成一棵树,那么就要满足,每一次的连边都是在两个不同的集合间进行的,这个用并查集就可以做。
还要将所有的节点都要连起来,所以记录一下节点数和边数,利用set就可以得到不同的节点个数,然比较是否满足节点数等于边数加一。
再对空树进行特判。
代码
#include <algorithm>#include <set>#include <cstdio>#include <cstring>using namespace std;const int maxn = 1000;int par[maxn+10];int get_par(int a){ if(par[a]<0) return a; else return par[a] = get_par(par[a]);}void merge(int a, int b){ int pa = get_par(a); int pb = get_par(b); if(pa!=pb) par[pa] = pb;}bool query(int a, int b){ return get_par(a) == get_par(b);}int main(){ int a, b, t=1; unsigned edge; set<int> node; bool flag; while(scanf("%d%d", &a, &b) && a!=-1) { if(a==0&&b==0) { printf("Case %d is a tree.\n", t++); continue; } memset(par, -1, sizeof(par)); merge(a, b); flag = true; edge = 1; node.clear(); node.insert(a); node.insert(b); while(scanf("%d%d", &a, &b) && a) { if(!flag) continue; if(query(a, b)) { flag = false; } else { merge(a, b); node.insert(a); node.insert(b); edge++; } } if(node.size()!=edge+1) flag = false; if(flag) printf("Case %d is a tree.\n", t++); else printf("Case %d is not a tree.\n", t++); } return 0;}
0 0
- poj1308 (并查集)Is It A Tree?
- POJ1308 - Is It A Tree? (并查集)
- POJ1308--并查集--Is It A Tree?
- Is It A Tree?--POJ1308--并查集
- hdu1325&&poj1308 Is It A Tree? 基础并查集
- POJ1308/HDU1325/NYOJ129-Is It A Tree?,并查集!
- Poj1308 Is It A Tree? 并查集
- POJ1308 Is it a tree? 基础并查集
- POJ1308 Is It A Tree? 并查集
- POJ1308 Is It A Tree?(树,并查集)
- kuangbin专题五并查集 POJ1308 Is It A Tree?(并查集)
- HDU1325 Is It A Tree? + POJ1308 Is It A Tree?【并查集】
- hdu1325is it a tree?&&poj1308 is it a tree?(并查集)
- HDU1272&&POJ1308 小希的迷宫&&Is It A Tree?(并查集)
- NYOJ129 树的判定 || POJ1308 Is It A Tree? 【并查集应用,树的定义】
- hdu 1325&&poj1308 Is It A Tree? 基础并查集★
- POJ1308 Is It A Tree? 并查集入门|判树
- poj1308 Is It A Tree?
- JavaWeb三层结构实例
- netty的对象的生命周期管理——引用计数
- HDU 4020 Ads Proposal
- C++细节问题
- Python中的对象的排序
- POJ1308 - Is It A Tree? (并查集)
- 15个易遗忘的Java问题
- Python中深拷贝与浅拷贝
- 深入源码解析Android中Loader、AsyncTaskLoader、CursorLoader、LoaderManager
- 数据库增删改查语句
- plish文件的读取(NSBundle)
- poj2986&&poj3675【圆与多边形相交面积模板】
- kafka集群搭建
- 第一阶段知识总结及问题反馈