Codeforces 1009F Dominant Indices
另类解法
将每一个节点拥有的各深度节点数量存在vector中,向上返回,这样不会占用过多的内存,以此判断最多节点相应的深度即可,但正常写最后一个数据会T,毕竟一次复制一个节点,相当于复制了(1+2+3+4+...+1e6)次,明显超时,所以特判一下1e6个节点的线性树,就算过了这个题了,,,但这个解法不算正规,最后一个数据改一下就又要T了,大家娱乐一下就好,,,23333
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("input.txt", "r", stdin);freopen("output.txt", "w", stout);
#define scd(a) scanf("%d",&a)
#define scf(a) scanf("%lf",&a)
#define scl(a) scanf("%lld",&a)
#define sci(a) scanf("%I64d",&a)
#define scs(a) scanf("%s",a)
typedef long long ll;
const int desll[][]={{,},{,-},{,},{-,}};
const ll mod=1e9+;
const int maxn=1e6+;
const int maxm=1e8+;
const double eps=1e-;
int m,n,ar[maxn];
char ch[maxn];
struct node{
int b,nex;
}no[maxn*];
int sz=,head[maxn],de;
vector<int> vvl[maxn];
void add(int a,int b)
{
no[sz].nex=head[a];
no[sz].b=b;
head[a]=sz++;
}
vector<int> dfs(int u){
vector<int> vl();
vl[]=;
//cout<<vl.size();
for(int i=head[u];i!=-;i=no[i].nex){
int v=no[i].b;
vector<int> vmid = dfs(v);
int lemid=vmid.size(),le=vl.size();
for(int i=;i<lemid;i++){
if(i<le-)vl[i+]+=vmid[i];
else {
vl.insert(vl.end(),vmid.begin()+i,vmid.end());
break;
}
}
}
int ans = -,maxMid=-;
for(int i=;i<vl.size();i++){
if(maxMid<vl[i]){
maxMid = vl[i];
ans=i;
}
}
ar[u]=ans;
return vl;
}
void init(int u,int pre,int dep)
{
de=max(de,dep);
for(int v:vvl[u]){
if(v!=pre){
init(v,u,dep+);
add(u,v);
}
}
} int main()
{
scd(n);
sz=;
memset(head,-,sizeof(head));
for(int i=;i<n;i++){
int x,y;scd(x);scd(y);
vvl[x].push_back(y);
vvl[y].push_back(x);
}
de=;
init(,,);
//cout<<"de = "<<de<<endl;
if(de<1e6)dfs();
for(int i=;i<=n;i++)printf("%d\n",ar[i]); return ;
}
Codeforces 1009F Dominant Indices的更多相关文章
- 2019.01.08 codeforces 1009F. Dominant Indices(长链剖分)
		
传送门 长链剖分模板题. 题意:给出一棵树,设fi,jf_{i,j}fi,j表示iii的子树中距离点iii距离为jjj的点的个数,现在对于每个点iii要求出使得fif_ifi取得最大值的那个jjj ...
 - Codeforces ECR47F Dominant Indices(线段树合并)
		
一个比较显然的做法:对每棵子树用线段树维护其中的深度,线段树合并即可. 本来想用这个题学一下dsu on tree,结果还是弃疗了. #include<iostream> #include ...
 - Codeforces 1009 F - Dominant Indices
		
F - Dominant Indices 思路:树上启发式合并 先跑轻子树,然后清除轻子树的信息 最后跑重子树,不清除信息 然后再跑一遍轻子树,重新加回轻子树的信息 由于一个节点到根节点最多有logn ...
 - Codeforces 1009 F. Dominant Indices(长链剖分/树上启发式合并)
		
F. Dominant Indices 题意: 给一颗无向树,根为1.对于每个节点,求其子树中,哪个距离下的节点数量最多.数量相同时,取较小的那个距离. 题目: 这类题一般的做法是树上的启发式合并,复 ...
 - 启发式合并CodeForces - 1009F
		
E - Dominant Indices CodeForces - 1009F You are given a rooted undirected tree consisting of nn vert ...
 - 【CF1009F】Dominant Indices(长链剖分)
		
[CF1009F]Dominant Indices(长链剖分) 题面 洛谷 CF 翻译: 给定一棵\(n\)个点,以\(1\)号点为根的有根树. 对于每个点,回答在它子树中, 假设距离它为\(d\)的 ...
 - CF1009F Dominant Indices 解题报告
		
CF1009F Dominant Indices 题意简述 给出一颗以\(1\)为跟的有根树,定义\(d_{i,j}\)为以\(i\)为根节点的子树中到\(i\)的距离恰好为\(j\)的点的个数,对每 ...
 - [CF1009F] Dominant Indices (+dsu on tree详解)
		
这道题用到了dsu(Disjoint Set Union) on tree,树上启发式合并. 先看了CF的官方英文题解,又看了看zwz大佬的题解,差不多理解了dsu on tree的算法. 但是时间复 ...
 - Educational Codeforces Round 47 (Rated for Div. 2)F. Dominant Indices 线段树合并
		
题意:有一棵树,对于每个点求子树中离他深度最多的深度是多少, 题解:线段树合并快如闪电,每个节点开一个权值线段树,递归时合并即可,然后维护区间最多的是哪个权值,到x的深度就是到根的深度减去x到根的深度 ...
 
随机推荐
- (原)DirectX11 深度测试(有点另类)
			
(问到自己清楚就可) @Author: 白袍小道 @说明:转载随缘,评论随缘,询问建议看书和源码会得到更准确的答案 深度测试的来源.目的.做法 一.问题询问 我们带着一些问题去浏览一番 1.深度测试发 ...
 - 洛谷P1071潜伏者(提高组)
			
题目描述 R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于S国的R 国间谍小C终于摸清了 S 国军用密码的编码规则: 1. S国军方内部欲发送的原信息经过加密后在网 ...
 - EasyUi DataGrid 请求Url两次问题
			
easyui datagrid 1.4 当total为0时,请求两次url问题 框架问题:需要在easyui文件后加修补补丁 /** * The Patch for jQuery EasyUI 1.4 ...
 - Linux中awk后面的RS, ORS, FS, OFS 含义
			
转载自http://blog.csdn.net/qq416647781/article/details/40649419 一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的 ...
 - PHP面向对象关键词static 、self
			
知识点: 一.static可以修饰类内的属性或方法,被修饰的属性或方法在类外部,不能被实例化成对象访问,而是使用类本身进行访问,而静态的方法如果想使用静态的属性,则需要用self::这样的写法来访问静 ...
 - Mac平台重新设置MySQL的root密码
			
Mac OS X - 重置 MySQL Root 密码 您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码: 1. 停止 mysql server. 通常是在 ...
 - 深入解析VueJs中的V-bind指令
			
v-bind 主要用于属性绑定,比方你的class属性,style属性,value属性,href属性等等,只要是属性,就可以用v-bind指令进行绑定.这次主要介绍了VueJs中的V-bind指令,需 ...
 - Linux系统—— core 文件
			
Linux core 文件介绍 1. core文件的简单介绍 在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. ...
 - 2.LXC和namespace介绍
			
lxc介绍 LXC又名Linux container,是一种虚拟化的解决方案,这种是内核级的虚拟化.(主流的解决方案Xen ,KVM, LXC) Linux Container容器是一种内核虚拟化技术 ...
 - ngrepeat 时注意的地方和一些little tricks
			
angularjs的一些使用经验总结,此篇文章单谈ng指令之一ngrepeat 1. ngrepeat 时报错 Duplicates in a repeater are not allowed, 正常 ...