问题链接:HDU1325 Is It A Tree?。

问题简述:若干组测试用例,每个测试用例包括若干组边(两个正整数组成),最后两个0(0 0)结束。判定每个测试用例是否为一棵树。

问题分析:判定有向图是否为一棵树的问题。可以用那些边构造一个并查集,构建并查集时,如果有向边的两个结点的根相同则不是一棵树,同时所有的结点指向的根应该是相同的。

注意点:结点虽然用整数表示,然而是随意的,而且范围不定。

程序说明:程序中,假定最大的结点不超过1000。将所有结点放入集合中,判定结点的根是否相同时,只需要考虑集合中的元素。

参考链接:UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?。

AC的C++语言程序如下:

/* HDU1325 Is It A Tree? */#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;const int MAXN = 1000;// 并查集
class UF {
private:int v[MAXN+1];bool visited[MAXN+1];int length;bool nocircleflag;    // 环标记int edgecount;      // 边计数
public:UF(int n) {length = n;}// 压缩int Find(int x) {if(x == v[x])return x;elsereturn v[x] = Find(v[x]);}bool Union(int x, int y) {edgecount++;visited[x] = true;visited[y] = true;x = Find(x);y = Find(y);if(x == y) {nocircleflag = false;return false;} else {v[x] = y;return true;}}bool Union2(int x, int y) {edgecount++;visited[x] = true;visited[y] = true;int x2 = Find(x);int y2 = Find(y);if(x2 == y2 || y2 != y) {nocircleflag = false;return false;} else {v[x2] = y2;return true;}}// 计数法判定连通性bool isconnect() {int rootcount = 0;for( int i=0 ; i<=MAXN ; i++ )if(visited[i])rootcount++;return (rootcount == edgecount + 1);}// 唯一树根判定连通性bool isconnect2() {int root = -1;for( int i=0 ; i<=MAXN ; i++ )if(visited[i]) {if(root == -1)root = Find(i);elseif(Find(i) != root)return false;}return true;}inline bool nocircle() {return nocircleflag;}void init() {nocircleflag = true;edgecount = 0;for(int i=0; i<=length; i++)v[i] = i, visited[i] = false;}
};int main()
{UF uf(MAXN);int src, dest, caseno=0;while(scanf("%d%d", &src, &dest)!=EOF) {if(src < 0 && dest < 0)     // 非常怪啊!!!break;uf.init();uf.Union2(src, dest);while(scanf("%d%d", &src, &dest)) {if(src==0 && dest==0)break;uf.Union2(src, dest);}if(uf.nocircle() && uf.isconnect2())printf("Case %d is a tree.\n", ++caseno);elseprintf("Case %d is not a tree.\n", ++caseno);}return 0;
}

参考链接:hdu1325Is It A Tree?(并查集)。

转载于:https://www.cnblogs.com/tigerisland/p/7564098.html

HDU1325 Is It A Tree?相关推荐

  1. UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)【废除!!!】

    本文废除!!! 参考链接:UVALive5461 UVA615 POJ1308 ZOJ1268 Is It A Tree?[并查集] Regionals 1997 >> North Ame ...

  2. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

  3. 【HDU1325】Is It A Tree?(并查集基础题)

    有以下坑点: 1.结束输入不一定-1,题目中的叙述只是说所有权值都为正值. 2.是否构成一棵树不能只判断是否只有一个根节点,没有环路,而且还需要判断每个节点的入度一定是1,不然就不是一棵树. (无环路 ...

  4. Is It A Tree?(hdu1325)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1325 Is It A Tree? Time Limit: 2000/1000 MS (Java/Oth ...

  5. 107. Binary Tree Level Order Traversal II

    题目 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from l ...

  6. 102. Binary Tree Level Order Traversal

    题目 Binary Tree Level Order Traversal 层次遍历二叉树 链接 Given a binary tree, return the level order traversa ...

  7. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  8. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  9. Code Forces Bear and Forgotten Tree 3 639B

    B. Bear and Forgotten Tree 3 time limit per test2 seconds memory limit per test256 megabytes inputst ...

  10. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

最新文章

  1. 新型序列化类库MessagePack,比JSON更快、更小的格式
  2. android获取屏幕的分辨率方法
  3. 《剑指Offer》36:二叉搜索树与双向链表
  4. 苹果CMS音乐猪自适应网站模板
  5. 智能一代云平台(三十六):项目中如何做到避免传递依赖
  6. Python攻克之路-生成器
  7. HTML+CSS大学生个人网站作业模板~黑色的html5个人博客网站模板整站下载
  8. 嵌入式开发是什么,与纯软件什么区别?
  9. 苹果CMS V10后台登录验证码错误解决方法
  10. matlab中样本相关系数的计算与测试
  11. NeRF神经辐射场学习笔记(十)— BungeeNeRF(CityNeRF)实现以及代码注释
  12. 企业邮箱的优势有哪些
  13. 法卡斯定理(Fakars' Lemma)
  14. 台湾大学教授洪士灏对产业前景的讨论
  15. windows 鼠标突然变成锯齿状
  16. 循环神经网络RNN 2—— attention注意力机制(附代码)
  17. Arduino 开发ESP8266(ESP12F)模块
  18. P1498 南蛮图腾---洛谷(分冶)
  19. Q-Learning 、Sarsa与 DQN算法
  20. 软件的生命周期的若干阶段

热门文章

  1. BZOJ3780 : 数字统计
  2. 从Visual studio 2005移出Visual Assist
  3. ExcelHelper代码
  4. SVM中的核函数什么意思
  5. Initial Audio Trap Empire Heatup3 Expansion (HeatUp3通用音色库)
  6. VEGAS如何分割与解组?
  7. Payload与form表单提交区别
  8. 【转】python编写规范——中标软件有限公司测试中心
  9. 1.6. 6.x Mini 安装后需要做的一些事
  10. java 多线程(生产者消费者)