首页 > 其他分享 >U41492 树上数颜色

U41492 树上数颜色

时间:2023-11-02 15:14:25浏览次数:40  
标签:sz 颜色 fa int U41492 son color 树上 col

U41492 树上数颜色

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int w[N];//w
vector<int> g[N];
vector<int>qr[N];
int ans[N];
int son[N],sz[N];//重儿子
int L[N],R[N],dfn,id[N],dep[N];
void dfs1(int u,int fa){
    son[u]=1;
    L[u]=++dfn;
    id[dfn]=u;
    for(auto v:g[u]){
        if(v==fa) continue;
        dfs1(v,u);
        son[u]+=son[v];
        if(son[v]>son[sz[u]]) sz[u]=v; 
    }
    R[u]=dfn;
}
int color[N],totcol;
void add(int v,int col){
    color[col]++;
    if(color[col]==1) totcol++;
}
void del(int col){
    color[col]--;
    if(color[col]==0) totcol--;
}
void dfs2(int u,int fa,bool op){
    for(int v:g[u]){
        if(v==fa||v==sz[u]) continue;
        dfs2(v,u,false);
    }
    if(sz[u]){
        dfs2(sz[u],u,true);
    }
    for(int v:g[u]){
        if(v==fa||v==sz[u]) continue;
        for(int i=L[v];i<=R[v];i++){
            add(v,w[id[i]]);
        }
    }
    add(u,w[u]);
    for(auto v:qr[u]){
        ans[v]=totcol;
    }
    if(!op){
        for(int i=L[u];i<=R[u];i++){
           del(w[id[i]]); 
        }
    }

}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int n,q;
    cin>>n;
    for(int i=1;i<n;i++){
        int x,y;
        cin>>x>>y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    for(int i=1;i<=n;i++) cin>>w[i];
    cin>>q;
    for(int i=1;i<=q;i++){
        int x;
        cin>>x;
        qr[x].push_back(i);
    }
    dfs1(1,0);
    dfs2(1,0,false);
    for(int i=1;i<=q;i++){
        cout<<ans[i]<<'\n';
    }
    return 0;
}

标签:sz,颜色,fa,int,U41492,son,color,树上,col
From: https://www.cnblogs.com/bu-fan/p/17805443.html

相关文章

  • P5659 [CSP-S2019] 树上的数
    相信大家都看过题,但还请搞清楚是数对应结点编号。这里用\(a_i\)表示\(i\)号结点对应的数。对于\(n\leq10\)的数据,全排列出删边的顺序然后模拟,取字典序最小的方案。对于菊花,仍然考虑删边的顺序,假设删边依次是\(rt\tov_1,rt\tov_2,\cdots,rt\tov_{n-1}\)。因为每删一......
  • 【动画进阶】单标签下多色块随机文字随机颜色动画
    我的小册 《CSS技术揭秘与实战通关》上线了,想了解更多有趣、进阶、系统化的CSS内容,可以猛击- LINK。在CSS还原拉斯维加斯球数字动画-掘金一文中,我们利用纯CSS,实现了一个非常Amazing的动画效果:其中一个核心点就是,我们利用了如下的代码,在一个DIV平面内,实现了单......
  • 基于Vue.js和Vanta.js的动态天空颜色效果实现
    背景最近在写一个Vue项目,想要在登录界面加一个动态背景效果,搜索之后发现了Vanta.js(https://www.vantajs.com/)这个库。Vanta可以借助three.js(WebGL)或p5.js渲染动态的3D背景效果,提供了多种预设。几种效果都挺不错的,最终我决定采用clouds效果。随即我发现这个效果是可......
  • python,pandas ,openpyxl提取excel特定数据,合并单元格合并列,设置表格格式,设置字体颜色,
    python,pandas,openpyxl提取excel特定数据,合并单元格合并列,设置表格格式,设置字体颜色,代码importosimportnumpyimportpandasaspdimportopenpyxlfromopenpyxl.stylesimportFontfromopenpyxl.stylesimportBorder,Sidedefread(file):#读取表格A和表格B......
  • js 生成随机数(含随机颜色)
    生成0-1之间的随机数Math.random()生成0-x之间的随机整数:Math.round(Math.random()*x)生成min-max之间的随机整数:Math.round(Math.random()*(max-min)+min)生成N位随机数/***函数--生成N位随机数*@param{*}N数字的长度*/functionrandomNum(N){returnString......
  • Toast自定义颜色抛出空指针异常
    首页沸点课程直播活动竞赛商城APP插件 创作者中心 会员登录 注册  实战Android升级目标版本到30过程中遇到的问题及解决办法开发者如是说2021-11-162,006阅读5分钟 专栏: Android开发文章合集 ......
  • 计算机网络中双绞线包括哪些颜色?
    计算机网络中双绞线包括绿白、绿、橙白、蓝、蓝白、橙、棕白、棕,等几种颜色。其中:EIA/TIA568A的线序定义依次为绿白、绿、橙白、蓝、蓝白、橙、棕白、棕,其标号如下表所示:EIA/TIA568B的线序定义依次为橙白、橙、绿白、蓝、蓝白、绿、棕白、棕,其标号如下表所示:根据568A和568B......
  • Python高效地生成#号颜色文本
    之前一直想知道如何快速通过整型变量生成颜色文本,直到问了chatgpt,下面是生成红颜色的一个实例:r=255g=0b=0color='#%02x%02x%02x'%(r,g,b)展示颜色的实例程序:fromtkinterimport*r=Tk()c=Canvas(r)c.pack(fill=BOTH,expand=True)b=Button(r,......
  • 微信小程序--2.设置主题颜色
    设置主题颜色1.在utils中新建文件userstyle.tsletthemecolor="#1F554F"//绿色letfcolor1="#0D2D2C"//黑色letfcolor2="#8F9A99"//灰色exportconstcolors={themecolor:'--themecolor:'+themecolor+';'+'-......
  • Wireshark 不同报文颜色的含义
    Wireshark使用教程:不同报文颜色的含义-CSDN博客可以在视图->着色规则里看 ......