牛客练习赛9。 B 柯朵莉的值域连续端
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续
一些数在值域上连续的意思即其在值域上构成一个连续的区间
输入描述:
第一行有一个整数n,表示树的节点数。 接下来n–1行,每行两个整数x,y,表示存在一条从x到y的有向边。 输入保证是一棵有根树。
输出描述:
输出一个数表示答案
输入
5 2 3 2 1 2 4 4 5
输出
5
说明
节点1子树中编号为1,值域连续 节点3子树中编号为3,值域连续 节点5子树中编号为5,值域连续 节点4子树中编号为4,5,值域连续 节点2子树中编号为1,2,3,4,5,值域连续
备注:
对于100%的数据,有n <=100000
给的树是一个有根数,即根节点的indegree[root] == 0; 另外这个题的数据比较规整,是从1到n,并没有相同的数。。。
#include <iostream>
#include <stdio.h>
#include <vector>
#include <string.h>
#include <cmath>
#include <queue>
#include <algorithm>
#include <unordered_map>
#include <sstream>
#include <string>
#include <utility>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 100050;
struct Node {int v, next;
}node[maxn * 3];
int head[maxn], total;
int res;
int indegree[maxn];
void init() {memset(indegree, 0, sizeof(indegree));res = 0;total = 0;memset(head, -1, sizeof(head));
}void add(int u, int v) {node[total] = {v, head[u]};head[u] = total++;
}int son[maxn];
pair<int, int> dfs(int fa, int u) {pair<int, int> a{u, u};son[u] = 1;for (int i = head[u]; i != -1; i = node[i].next) {int v = node[i].v;if (v != fa) {auto t = dfs(u, v);a.first = min(a.first, t.first);a.second = max(a.second, t.second);son[u] += son[v];}}//cout << fa << " " << u << " " << son[u] << endl;if (a.second - a.first + 1 == son[u])res++;return a;
}int main() {//freopen("in.txt", "r", stdin);init();int n;cin >> n;for (int i = 1; i < n; ++i) {int u, v;cin >> u >> v;indegree[v]++;add(u, v);}int root;for(int i = 1; i <= n; ++i) {if (!indegree[i]) {root = i;break;}}dfs(-1, root);cout << res << endl;
}
牛客练习赛9。 B 柯朵莉的值域连续端相关推荐
- 牛客练习赛9 B - 珂朵莉的值域连续段
题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数.接下来n–1行,每 ...
- 牛客练习赛7 E 珂朵莉的数列
珂朵莉的数列 思路: 树状数组+高精度 离散化不知道哪里写错了,一直wa,最后用二分写的离散化 哪位路过大神可以帮我看看原来的那个离散化错在哪里啊 通过代码: import java.math.Big ...
- 搜索+思维 珂朵莉的值域连续段
珂朵莉的值域连续段 链接:https://www.nowcoder.com/acm/contest/40/B 来源:牛客网 题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 ...
- 珂朵莉的值域连续段——DFS
题目描述: 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数. 接下来n–1行 ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 牛客练习赛34 E little w and Digital Root(数位dp)
title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...
- 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
最新文章
- ROS Publisher node
- 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
- 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
- vue代码生成器可视化界面_手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)...
- idea lombok插件安装_mac安装的软件和idea的插件推荐
- 【阿里妈妈营销科学系列】第六篇:营销组合模型MMM
- 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task2数据分析
- mysql中文乱码 go_Mysql binlog乱码问题研究-Go语言中文社区
- 配色方案专辑上线,宠溺设计师的好素材!
- python3实例车代码_Python编程pygame模块实现移动的小车示例代码
- Axure元件库,Axure元件库下载,Axure Design
- esp32的MQTT物联网开发记录
- android游戏妄撮java源码
- 一杯茶的时间,上手 Django 框架开发
- P4086 [USACO17DEC]My Cow Ate My Homework S(静态数据预处理:后缀和、后缀最小值)
- win10网络连接出现感叹号
- 实战演练-java+微信小程序实现省市区三级联动
- 对finalize的理解
- 微调电位器命名规则_电位器物料规格描述规范
- Windows AutoPilot简介转载学习