题目链接:

F - Auxiliary Set

HDU - 5927

学习网址:https://blog.csdn.net/yiqzq/article/details/81952369
题目大意一棵节点数为n的有根数,根节点为1,一开始所有的点都是重点,接下来有q次询问,每次询问把m个点变为轻点,问你树中还有多少个重点。 
重点应该满足的条件为: 
1.它本身是重点。 
2.它为两个重点的最近公共祖先。 
每次询问之后在下次询问前,所有的点都恢复为重点。

具体思路:对于每个点保存他的深度。因为每次输入的数不重要的点,首先对于这些不重要的点按照深度从大到小进行排序, 然后先去处理深度大的。当处理深度大的时候,可以保证这个节点下面是没有不重要的点的,也就是这个节点的下面全都是重要的节点,那么这个点也肯定是符合的。然后往上更新的时候,如果当前的不重要节点下面没有点了,那么这个不重要节点的父亲往下的儿子数就应该减去1,也就是说这个分支下不存在重要的节点了。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
# define ll long long
const int maxn = 2e5+;
int n,m;
vector<int>edge[maxn];
void addedge(int fr,int to)
{
edge[fr].push_back(to);
}
int sto[maxn];
int depth[maxn];
int son1[maxn],son2[maxn];
int father[maxn];
void init()
{
for(int i=; i<=n; i++)
{
edge[i].clear();
son1[i]=;
}
}
void dfs(int cur,int fa,int dep)
{
father[cur]=fa;
depth[cur]=dep+;
for(int i=; i<edge[cur].size(); i++)
{
int to=edge[cur][i];
if(to==fa)
continue;
son1[cur]++;
dfs(to,cur,dep+);
}
}
bool cmp(int t1,int t2)
{
return depth[t1]>depth[t2];
}
int main()
{
int T;
int Case=;
scanf("%d",&T);
while(T--)
{
int st,ed;
scanf("%d %d",&n,&m);
init();
for(int i=; i<n; i++)
{
scanf("%d %d",&st,&ed);
addedge(st,ed);
addedge(ed,st);
}
printf("Case #%d:\n",++Case);
dfs(,,);
while(m--)
{
int sz,ans;
scanf("%d",&sz);
ans=n-sz;
for(int i=; i<=sz; i++)
{
scanf("%d",&sto[i]);
son2[sto[i]]=son1[sto[i]];
}
sort(sto+,sto+sz+,cmp);
for(int i=; i<=sz; i++)
{
if(son2[sto[i]]>=)
ans++;
if(son2[sto[i]]==)
son2[father[sto[i]]]--;
}
printf("%d\n",ans);
}
}
return ;
}

F - Auxiliary Set HDU - 5927 (dfs判断lca)的更多相关文章

  1. HDU 3966 dfs序+LCA+树状数组

    题目意思很明白: 给你一棵有n个节点的树,对树有下列操作: I c1 c2 k 意思是把从c1节点到c2节点路径上的点权值加上k D c1 c2 k 意思是把从c1节点到c2节点路径上的点权值减去k ...

  2. 蓝皮书:异象石 【dfs序+lca】

    题目详见蓝皮书[算法竞赛:进阶指南]. 题目大意: 就是给你一颗树,然后我们要在上面进行三种操作:  1.标记某个点  或者  2.撤销某个点的标记  以及   3.询问标记点在树上连通所需的最短总边 ...

  3. hdu 5188 dfs+二分

    get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之 ...

  4. HDU 5143 DFS

    分别给出1,2,3,4   a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...

  5. hdu 5167(dfs)

    Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  6. Snacks HDU 5692 dfs序列+线段树

    Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...

  7. DFS判断连通图

    因为是连通图,所以从任意一点出发,一定可以通过一遍深度优先遍历就能走过所有的点和边,就可以利用这个性质来很容易的通过DFS判断图是否为连通图 下面是具体算法:

  8. HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)

    Auxiliary Set Time Limit: 9000/4500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  9. HDU 5927 Auxiliary Set (dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5927 题意: 给你一棵树,其中有一些'不重要'的点,要是这些'不重要'的点的子树中有两个重要的点的LC ...

随机推荐

  1. Vuex速学篇:(2)利用state保存新闻数据

    回顾 以前我们在做这个新闻列表的时候,是一个写死的数据 export default{ data(){ return{ newslist:[ {newsid:"101",pubti ...

  2. Explicit Constructors(显式构造函数)

    按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // ...

  3. 2018ccpc秦皇岛站后记

    总的来说这不是一场体验十分好的比赛. 定的宾馆有一点小,学校提供的伙食人太多了,不想排队,饭票又不能换香蕉,就没有吃. 到的第一天遇到了价格向上取整和到站不打发票的两个黑车司机,让我对这个地点好感大减 ...

  4. 怎么正确的回滚git的代码?

    1. git reflog或者git log查看到节点的hash值 2. git reset滚回某个节点 1)如果想保留当前的代码用 git reset --mixed ${Hash} 2)如果想联通 ...

  5. mybtis 基础

    一.什么是mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBati ...

  6. 全角的空格(A1A1)惹的祸!

    #先上干货 “A1A1”是指全角的空格(GBK码): #验证 由上图可以看出半角的空格的HEX为"20": 由上图可以看出,在ANSI格式编码的文件中输入的全角的空格,转换为HEX ...

  7. jQuery使用(六):DOM操作之元素包裹、克隆DOM与data的综合应用

    包裹 wrap() wrapInner() wrapAll() unwrap() clone() 数据缓存机制 data 文档处理(包裹) 1.1.wrap()--将所匹配的元素用其他元素结构化标签包 ...

  8. HDU - 4027 Can you answer these queries?(线段树区间修改)

    https://cn.vjudge.net/problem/HDU-4027 题意 给一个有初始值的数组,存在两种操作,T=0时将[L,R]的值求平方根,T=1时查询[L,R]的和. 分析 显然不符合 ...

  9. 声源测向: TDOA-GCC-PATH方法

    收藏链接: http://www.funcwj.cn/2018/05/10/gcc-phat-for-tdoa-estimate/

  10. wav音频文件格式解析【个人笔记】(自用)

    1. WAV格式 wav是微软开发的一种音频文件格式,注意,wav文件格式是无损音频文件格式,相对于其他音频格式文件数据是没有经过压缩的,通常文件也相对比较大些.. 支持多种音频数字,取样频率和声道, ...