原题链接:请点击我

思路:把树还原出来,对每个结点,计算以该结点为根的子树结点数。子树结点数为偶数的结点数量就是所求森林中树木的数量。结点数量减去一就是所求结果。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;struct node{int index, num_subtree;vector<node*> children;node(int i=0,int n=0):index(i),num_subtree(n), children(vector<node*>()){}
};node* construct_tree(int parent, int index, const vector<vector<int>>& adjLsit);
void count_even(node* root, int& cnt);int main() {/* Enter your code here. Read input from STDIN. Print output to STDOUT */int N, M; cin >> N >> M;vector<vector<int>> adjList(N + 1);for(int i = 0; i < M; i++){int n1, n2; cin >> n1 >> n2;adjList[n1].push_back(n2);adjList[n2].push_back(n1);}node* root = construct_tree(0, 1, adjList);int cnt = 0;count_even(root, cnt);cout << cnt - 1 << endl;return 0;
}node* construct_tree(int parent, int index, const vector<vector<int>>& adjList){node* tmp = new node(index);tmp->num_subtree = 1;for(int i = 0; i < adjList[index].size(); i++){if(adjList[index][i] != parent){tmp->children.push_back(construct_tree(index, adjList[index][i], adjList));tmp->num_subtree += tmp->children.back()->num_subtree;}}return tmp;
}void count_even(node* root, int& cnt){for(auto vit: root->children){count_even(vit, cnt);}if(root->num_subtree%2==0){cnt++;}
}

Hacker Rank 上的 Even Tree 小议相关推荐

  1. hacker_从在Hacker News上展示我的作品中学到了什么

    hacker by Siddharth Kshetrapal 通过Siddharth Kshetrapal 从在Hacker News上展示我的作品中学到了什么 (What I learned fro ...

  2. Hacker - 世界上第一个黑客

    http://juliet.iteye.com/blog/176525凯文·米特尼克,1964年生于美国加州的洛杉矶. 13岁时他对电脑着了迷,掌握了丰富的计算机知识和高超的操作技能,但却因为用学校的 ...

  3. 未来最有竞争力的编程语言_如何在2020年9月开始竞争性编程

    未来最有竞争力的编程语言 Competitive programming is changing the industry hiring process drastically. Many Big C ...

  4. 如何在国内上medium_在Medium上写作的风格指南

    如何在国内上medium After spending more than 1,000 hours writing and editing stories for our Medium publica ...

  5. 2D图片3秒变立体,Adobe实习生的智能景深算法,登上顶级期刊

    来源:本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载 本文约2500字,建议阅读8分钟. 本文为你介绍了Adobe放出的新魔法,2-3秒拍出立体感. 你离礁石越来越近,仿佛还有一秒就要 ...

  6. K3s初探:Rancher架构师带你尝鲜史上最轻量Kubernetes发行版

    发布不到两天,GitHub上Star数已近3000,这个业界大热的.史上最轻量的开源Kubernetes发行版,你试过了没? Rancher资深架构师来教你走出尝鲜第一步!使用教程在此! 前 言 昨天 ...

  7. web性能优化——关键渲染路径(上)

    文章同步更新于 Github blog 从收到 HTML.CSS 和 JavaScript 字节到对其进行必需的处理,从而将它们转变成渲染的像素这一过程中有一些中间步骤,优化性能其实就是了解这些步骤中 ...

  8. 如何在Linux上找到包含特定文本的所有文件?

    我正在尝试找到一种方法来扫描整个Linux系统,查找包含特定文本字符串的所有文件. 只是为了澄清,我在文件中寻找文本,而不是文件名. 当我查找如何做到这一点时,我遇到了两次这个解决方案: find / ...

  9. 因为修苹果电脑太贵,美国人自学当上百万粉博主,网友:坐标深圳,不存在这问题...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI MacBook坏了,怎么办? 修呗!还能换了咋地. 最近,一位网友与苹果MacBook之间的"抗争"故事,在国外火了. ...

  10. 2D图片3秒变立体,变换视角流畅自然:Adobe实习生的智能景深算法,登上顶级期刊...

    鱼羊 栗子 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你离礁石越来越近,仿佛还有一秒就要触礁了. 不过这张动图,并不是从人类拍摄的视频里截下来的. 是Adobe放出的新魔法,把这张静 ...

最新文章

  1. 判断android应用程序是否已安装
  2. 英文构词法 —— ant、ent 后缀
  3. 第十五章 异常检测-机器学习老师板书-斯坦福吴恩达教授
  4. 简单实现AJAX: ASP.NET2.0 中回调的实现及常见问题的解决
  5. 深度学习和目标检测系列教程 12-300:常见的opencv的APi和用法总结
  6. 微信小程序开发:学习笔记[8]——页面跳转及传参
  7. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
  8. 第 1-2 课:你不知道的基础数据类型和包装类 + 面试题
  9. POJ题目分类(转)
  10. 知网哭穷赔不起1200亿,网友:收钱时咋不嫌多
  11. 利用大白菜制作多系统启动U盘(ubuntu+windows)
  12. 【demo记录】百度地图获取当前所在城市
  13. MySQL主从同步详解与配置
  14. 路由器自动ip服务器无响应,路由器无法自动分配IP地址原因及解决方法
  15. 批处理删除注册表分支方法
  16. 阿木有专门讲MAVROS功能包节点的课,有讲MAVROS怎么订阅消息,发布消息。看来MAVROS这边的编程不用太担心。
  17. java中ceil_Java ceil()方法
  18. F018-内需不足”是野鸡伪科学 #F1980
  19. Word2Vec源码解析
  20. 如何快速查找并删除手机上的重复文件

热门文章

  1. qq邮箱注册收件服务器,qq邮箱smtp服务器
  2. 采用计算机对酒店客房进行管理,酒店客房部计算机管理.doc
  3. 【嵌入式模块】LCD1602LCD12864
  4. 全球尺度遥感云计算平台:Google Earth Engine
  5. windows 各版本镜像下载地址
  6. 安卓手机左右声道调节应用下载_闪电全能格式转换器下载_闪电全能格式转换器官方下载[转换工具]...
  7. dell网卡linux驱动,[求助]Linux下dell的无线网卡驱动的安装
  8. 谷歌、火狐浏览器扩展开发
  9. cocosbuilder3.0使用小记
  10. java万年历报告_java万年历设计报告