bzoj 4551[Tjoi2016Heoi2016]树

  这题可以用并查集做,一开始统计一下记录每个点被标记了几次,除了被标记过的点外,其他节点都与其父亲所在集合合并,然后倒着做,做的时候如果有节点标记次数变为了0,则将其与其父亲合并。

  代码

 1 #include<cstdio>
 2 #include<queue>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define N 500100
 6 using namespace std;
 7 typedef long long ll;
 8 int n,m,i,a,b,dp,p[N],pre[N],tt[N];
 9 int F[N],v[N],sum[N],f[N],ans[N],tot;
10 char typ[N];
11 void link(int x,int y)
12 {
13     dp++;pre[dp]=p[x];p[x]=dp;tt[dp]=y;
14 }
15 void dfs(int x,int fa)
16 {
17     int i=p[x];
18     F[x]=fa;
19     while (i)
20     {
21         if (tt[i]!=fa)
22             dfs(tt[i],x);
23         i=pre[i];
24     }
25 }
26 int gf(int x)
27 {
28     int p=x,t;
29     while (p!=f[p]) p=f[p];
30     while (x!=p)
31     {
32         t=f[x];f[x]=p;x=t;
33     }
34     return p;
35 }
36 int main()
37 {
38     scanf("%d%d",&n,&m);
39     for (i=1;i<n;i++)
40     {
41         scanf("%d%d",&a,&b); 
42         link(a,b);link(b,a);
43     }
44     dfs(1,0);
45     sum[1]=1;
46     for (i=1;i<=m;i++)
47     {
48         scanf(" %c%d",&typ[i],&v[i]);
49         if (typ[i]=='C')
50         sum[v[i]]++;
51     }
52     for (i=1;i<=n;i++) f[i]=i;
53     for (i=1;i<=n;i++) if (!sum[i]) f[gf(i)]=gf(F[i]);
54     for (i=m;i>=1;i--)
55     {
56         if (typ[i]=='Q')
57         {
58             tot++;ans[tot]=gf(v[i]);
59         }
60         else
61         {
62             sum[v[i]]--;
63             if (sum[v[i]]==0) f[gf(v[i])]=gf(F[v[i]]);
64         }
65     }
66     for (i=tot;i>=1;i--)
67     printf("%d\n",ans[i]);
68     
69 }

 

转载于:https://www.cnblogs.com/fzmh/p/5444958.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python+OpenCV图像处理(九)图像金字塔

图像金字塔 图像金字塔是图像多尺度表达的一种&#xff0c;是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩&#xff0c;一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低&#xff0c;且来源于同一张原始图的图像集合。其通…

ImportError: cannot import name ‘joblib‘

原因&#xff1a; 安装的Scikit-learn版本太高&#xff0c;我安装的版本是0.23.1 解决方法&#xff1a; 需要将Scikit-learn版本降到0.21以下 pip uninstall joblib scikit-learn sklearn pip install Scikit-learn0.20.4 或者直接安装joblib&#xff1a; pip install j…

3位物理学家获基础物理学特别突破奖

Peter van Nieuwenhuizen、Sergio Ferrara和Dan Freedman&#xff08;从左至右&#xff09;来源&#xff1a;中国科学报超引力理论是一个试图统一所有自然力的理论&#xff0c;在被提出40多年后&#xff0c;它是否能真实描述这个世界仍然悬而未决。尽管如此&#xff0c;该理论的…

python+OpenCV图像处理(十)霍夫变换简单图形检测

霍夫变换 霍夫变换&#xff08;Hough Transform&#xff09;是图像处理中从图像中识别几何形状的基本方法之一&#xff0c;应用很广泛&#xff0c;也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状&#xff08;如&#xff1a;直线、圆等&#xff09;。最基…

Windows下安装scikit-learn

在安装sklearn前&#xff0c;首先确保安装了Numpy、Scipy和matplotlib 安装Numpy&#xff1a; 首先到https://pypi.org/project/numpy/#files下载安装包 注意文件的版本&#xff0c;如“numpy-1.19.1-cp36-cp36m-win_amd64.whl”表示该文件适用于widows操作系统下64位的Pyth…

华为发布面向2025十大趋势

来源&#xff1a;华为华为今日发布全球产业展望GIV2025&#xff0c;提出智能世界正在加速而来&#xff0c;触手可及&#xff0c;并预测&#xff1a;到2025年&#xff0c;智能技术将渗透到每个人、每个家庭、每个组织&#xff0c;全球58%的人口将能享有5G网络&#xff0c;14%的家…

python+OpenCV图像处理(十一)图像轮廓检测

图像轮廓检测 &#xff08;一&#xff09;检测轮廓 在OpenCV-python中&#xff0c;使用cv2.findContours()函数来对图像进行轮廓检测。 返回三个值&#xff1a;image&#xff0c;contours&#xff0c;hierarchy contours指的是轮廓本身&#xff0c;hierarchy是每条轮廓对应的…

Array.sort排序

Sorting an Array 1. 数字排序 int[] intArray new int[] { 4, 1, 3, -23 }; Arrays.sort(intArray); 输出&#xff1a; [-23, 1, 3, 4] 2. 字符串排序&#xff0c;先大写后小写 String[] strArray new String[] { "z", "a", "C" }; Ar…

python+OpenCV图像处理(十二)车牌定位中对图像的形态学组合操作处理

车牌定位中对图像的形态学组合操作处理 所谓的车牌定位&#xff0c;其中最关键的部分就是对图片的处理&#xff0c;参数的设置&#xff0c;并使之拥有泛化能力。 首先传入图片&#xff0c;在进行大规模的图片处理时&#xff0c;因为无法确定图片的尺寸&#xff0c;所以需要将…

ACL 2019 知识图谱的全方位总结

来源&#xff1a;AI科技评论翻译 | 栗峰  审校 | Camel编辑 | Pita ACL 2019已经结束&#xff0c;但其空前的规模仍然震撼人心&#xff1a;2900多篇提交论文&#xff0c;660篇被接收&#xff0c;3000多名会议注册人员&#xff0c;以及4个超过400人的研讨会&#xff08;比一些…

word只在第一页插入页眉

首先点击插入>页眉 在设计栏中勾上“首页不同”&#xff0c;如下所示&#xff1a;

Redis应用场景(转)

(来源&#xff1a;http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五种&#xff1a; StringHashListSetSorted set在具体描述这几种数据类型之前&#xff0c;我们先通过一张图了解下Redis内部内存管理中…

word删除页眉下面的横线

首先点击插入>页眉&#xff0c;输入页眉后&#xff0c;选中页眉内容&#xff1a; 点击“设计”栏&#xff1a; 点击页面边框&#xff1a; 然后按如下设置即可消除页眉下面的横线

TensorFlow 多任务学习

多任务学习 多任务学习&#xff0c;顾名思义&#xff0c;就是多个任务模型同时执行&#xff0c;进行模型的训练&#xff0c;利用模型的共性部分来简化多任务的模型&#xff0c;实现模型之间的融合与参数共享&#xff0c;可以在一定程度上优化模型的运算&#xff0c;提高计算机…

【工业互联网】全球工业互联网十大最具成长性技术展望(2019-2020年)

来源&#xff1a;中国工业互联网研究院来源&#xff1a;中国工业互联网研究院全球工业互联网十大最具成长性技术展望&#xff08;2019-2020年&#xff09;工业互联网工业互联网是第四次工业革命的重要基石&#xff0c;在世界范围已步入发展快车道&#xff0c;正处于面临重大突破…

win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛

本文共514个字&#xff0c;预计用时2分钟小伙伴们&#xff0c;今天给大家分享一个小软件&#xff0c;名字叫做 EyeCareApp&#xff0c;中文名&#xff1a;护眼软件EyeCareApp是一款能够调节屏幕亮度的软件&#xff0c;它可以调整屏幕亮度&#xff0c;滤除蓝光&#xff0c;有效减…

UIAlertAction添加输入框

* UIAlertController & UIAlertAction * 1. 在iOS8中&#xff0c;我们失去了两个非常简单的控件&#xff0c;那就是UIAlertView、UIActionSheet&#xff0c;取而代之的是UIAlertController和UIAlertAction * 2. 在iOS8中&#xff0c;UIAlertController控件使用两种样式代…

国家计划统筹布局哪些人工智能创新平台?

来源&#xff1a;智造智库建设布局人工智能创新平台&#xff0c;是强化对人工智能研发应用的基础支撑。未来&#xff0c;国家层面计划大力促进各类通用软件和技术平台的开源开放&#xff0c;且按照军民深度融合的要求和相关规定&#xff0c;推进军民共享共用。人工智能开源软硬…

install package vif包_2019-10-03【百宝箱】如何使用wireshark实时远程抓取openwrt路由器包...

前言经常遇到问题的时候需要抓取wifi数据包&#xff0c;常用的做法有三种&#xff1a;1、使用 专用网卡omnipeekwindows软件抓包2、使用 macbook pro的airtool软件抓包3、在路由器上使用tcpdump除了omnipeek 其他都不能实时操作。如何结合openwrt来达到远程实时抓包呢&#xff…

CNN中的卷积操作与权值共享

CNN中非常有特点的地方就在于它的局部连接和权值共享&#xff0c;通过卷积操作实现局部连接&#xff0c;这个局部区域的大小就是滤波器filter&#xff0c;避免了全连接中参数过多造成无法计算的情况&#xff0c;再通过参数共享来缩减实际参数的数量&#xff0c;为实现多层网络提…