并查集。需要考虑入度。

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAXNUM 10005
  5.  
  6. int bin[MAXNUM];
  7. int degree[MAXNUM];
  8. int nums[MAXNUM];
  9.  
  10. int find(int x) {
  11. int r = x;
  12.  
  13. while (bin[r] != r)
  14. r = bin[r];
  15.  
  16. return r;
  17. }
  18.  
  19. int main() {
  20. int x, y, fx, fy, n, case_n = ;
  21. int i, flg;
  22.  
  23. while () {
  24. scanf("%d %d", &x, &y);
  25. if (x< && y<)
  26. break;
  27. memset(degree, , sizeof(degree));
  28. n = ;
  29. ++case_n;
  30. if (x== && y==) {
  31. printf("Case %d is a tree.\n", case_n);
  32. continue;
  33. }
  34. for (i=; i<MAXNUM; ++i)
  35. bin[i] = i;
  36. fx = find(x);
  37. fy = find(y);
  38. bin[fy] = fx;
  39. degree[y]++;
  40. flg = ;
  41. nums[n++] = x;
  42. nums[n++] = y;
  43. while () {
  44. scanf("%d %d", &x, &y);
  45. if (x== && y==)
  46. break;
  47. fx = find(x);
  48. fy = find(y);
  49. if (fx != fy) {
  50. bin[fy] = fx;
  51. degree[y]++;
  52. } else {
  53. bin[fy] = fx;
  54. degree[y]++;
  55. flg = ;
  56. }
  57. nums[n++] = x;
  58. nums[n++] = y;
  59. }
  60. fx = find(nums[]);
  61. for (i=; i<n; ++i) {
  62. fy = find(nums[i]);
  63. if (fx != fy) {
  64. flg = ;
  65. break;
  66. }
  67. }
  68. for (i=; i<n; ++i) {
  69. if (degree[nums[i]] > ) {
  70. flg = ;
  71. break;
  72. }
  73. }
  74. if (flg)
  75. printf("Case %d is a tree.\n", case_n);
  76. else
  77. printf("Case %d is not a tree.\n", case_n);
  78. }
  79.  
  80. return ;
  81. }

【HDOJ】1325 Is It A Tree?的更多相关文章

  1. 【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java

    [LeetCode]Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum dept ...

  2. 【BZOJ2843】极地旅行社(Link-Cut Tree)

    [BZOJ2843]极地旅行社(Link-Cut Tree) 题面 BZOJ 题解 \(LCT\)模板题呀 没什么好说的了.. #include<iostream> #include< ...

  3. 【BZOJ4530】大融合(Link-Cut Tree)

    [BZOJ4530]大融合(Link-Cut Tree) 题面 讨厌权限题!!! Loj链接 题目描述 小强要在 N个孤立的星球上建立起一套通信系统.这套通信系统就是连接 N个点的一个树.这个树的边是 ...

  4. 【BZOJ1969】航线规划(Link-Cut Tree)

    [BZOJ1969]航线规划(Link-Cut Tree) 题面 BZOJ 题解 删边操作 套路呀 离线读入倒过来做 变成加边操作 现在考虑怎么确定两点直接的关键路径条数 如果是一棵树,那么每条边都是 ...

  5. 【BZOJ4825】【HNOI2017】单旋(Link-Cut Tree)

    [BZOJ4825][HNOI2017]单旋(Link-Cut Tree) 题面 题面太长,懒得粘过来 题解 既然题目让你写Spaly 那就肯定不是正解 这道题目,让你求的是最大/最小值的深度 如果有 ...

  6. 【BZOJ3669】【Noi2014】魔法森林(Link-Cut Tree)

    [BZOJ3669][Noi2014]魔法森林(Link-Cut Tree) 题面 题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n ...

  7. 【BZOJ2049】洞穴勘测(Link-Cut Tree)

    [BZOJ2049]洞穴勘测(Link-Cut Tree) 题面 题目描述 辉辉热衷于洞穴勘测. 某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别 ...

  8. 【BZOJ3999】[TJOI2015]旅游(Link-Cut Tree)

    [BZOJ3999][TJOI2015]旅游(Link-Cut Tree) 题面 BZOJ 洛谷 题解 一道不难的\(LCT\)题(用树链剖分不是为难自己吗,这种有方向的东西用\(LCT\)不是方便那 ...

  9. 【BZOJ5212】[ZJOI2018]历史(Link-Cut Tree)

    [BZOJ5212][ZJOI2018]历史(Link-Cut Tree) 题面 洛谷 BZOJ 题解 显然实际上就是给定了一棵树和每个点被\(access\)的次数,求解轻重链切换的最大次数. 先考 ...

随机推荐

  1. 蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)

    蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)下载 >>>>>>>>>>>>>>>>>> ...

  2. JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用

    var Api = { ajax:{ // 添加项目 旧! add_project : function(pro_name, html, css, js,callback) { $.post(&quo ...

  3. BrainTree信用卡包

    BrainTree是一个国外集成信用卡支付的卡包. 沙盒登陆地址: https://sandbox.braintreegateway.com/login 登陆沙盒得到商户ID.公钥.私钥. 1.配置w ...

  4. 数据库ACID、隔离级别与MVCC

    首先需要明确事务的概念:一组原子性的SQL查询,如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组语句,否则所有语句都不执行. 事务有ACID四个特性,即: 原子性:一个事务是一个 ...

  5. 1. 连接字符串的创建 - Lazy.Framework从零开始设计自己的ORM架构

    开发初衷 注册了博客园已经有几个月了,却从来都没有上来过,本人大概从2010年开始就开始做.NET 方向的开发. 这个是我在博客园发布的第一个帖子. 主要就是说说最近在写的一个ORM架构. 本人接触的 ...

  6. Java 文件下载

    public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的 ...

  7. c语言学习之基础知识点介绍(八):函数的基本用法

    本节开始说函数. 一.函数的基本用法  /* 作用:可以实现代码的复用,在一定程度上解决代码冗余的问题:方便后期维护. 语法: void 函数名(){ 函数体; } 函数命名要有意义,遵守驼峰命名法. ...

  8. C#世界中的委托

    委托是C#最重要的特性之一,C#后面的所有特性基本都是建立在委托的基础上的. 1.C#委托是什么? 可以把C#的委托理解为函数的一个包装,它使得C#中的函数可以作为参数来被传递.如果你学过C++,可以 ...

  9. 将requirejs进行到底(2)

    前一篇:JS模块化工具requirejs教程(一):初识requirejs 我们以非常简单的方式引入了requirejs,这一篇将讲述一下requirejs中的一些基本知识,包括API使用方式等. 基 ...

  10. select源码分析(linux2.6.11)

    本文以tcp poll为例子来分析select的源码,下面是函数调用顺序.select--->sys_select->do_select--->sock_poll--->tcp ...