网易首页 > 网易号 > 正文 申请入驻

2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类

0
分享至

2024-04-21:用go语言,给一棵根为1的树,每次询问子树颜色种类数。

假设节点总数为n,颜色总数为m,

每个节点的颜色,依次给出,整棵树以1节点做头,

有k次查询,询问某个节点为头的子树,一共有多少种颜色。

1 <= n, m, k <= 10^5。

答案2024-04-21:

来自左程云。

chatgpt

大体步骤如下:

大体过程描述:

1.数据结构初始化:定义全局变量和数组用来存储图的结构、节点颜色等信息,并初始化相关数组和变量。

2.输入处理:通过预定义的输入数组,按给定格式依次读取节点数n,建立树的连接关系,记录每个节点的颜色。

3.DFS遍历

  • 第一次DFS(dfs1):计算每个节点子树的大小,并标记每个节点的重节点。
  • 第二次DFS(dfs2):处理每个节点的子树,包括处理重节点和非重节点的不同子树,更新颜色计数和子树的颜色种类数。

4.颜色计数:通过add函数和delete函数实现颜色的增加与减少操作,维护当前节点子树中颜色种类的计数。

5.输出查询结果:对于每次查询,按照给定节点进行处理,并输出计算得到的颜色种类数。

时间复杂度:

  • DFS1:对整个树进行一次DFS,时间复杂度为O(n)。
  • DFS2:同样对整个树进行一次DFS,时间复杂度为O(n)。
  • add和delete函数:每个节点至多被遍历4次(每条边两次),因此每次add和delete的时间复杂度为O(n)。
  • 查询:对于每次查询,计算颜色种类数时需要遍历整个子树,时间复杂度为O(n)。

综上,总的时间复杂度为O(n)。

空间复杂度:

  • graph, color, size, heavy, cnt, ans:每个数组的长度为n,因此空间复杂度为O(n)。
  • 其他局部变量:不超过常数大小,可忽略。

综上,总的额外空间复杂度为O(n)。

Go完整代码如下:

packagemain
import(
"fmt"
)
varMAXNint=200005
vargraph[][]int
varcolor[]int
varsize[]int
varheavy[]int
varcnt[]int
varans[]int
varn,mint
funcmain(){
graph=make([][]int,MAXN)
fori:=rangegraph{
graph[i]=make([]int,0)
}
color=make([]int,MAXN)
size=make([]int,MAXN)
heavy=make([]int,MAXN)
cnt=make([]int,MAXN)
ans=make([]int,MAXN)
inputs:=[]int{5,
1,2,
1,3,
2,4,
2,5,
1,2,2,3,3,
5,
1,
2,
3,
4,
5}
ii:=0
foriin=inputs[ii]
ii++
fori:=1;i<=n;i++{
graph[i]=make([]int,0)
}
fori:=1;ia:=inputs[ii]
ii++
b:=inputs[ii]
ii++
graph[a]=append(graph[a],b)
graph[b]=append(graph[b],a)
}
fori:=1;i<=n;i++{
c:=inputs[ii]
ii++
color[i]=c
}
dfs1(1,0)
dfs2(1,0,false)
m=inputs[ii]
ii++
fori:=1;i<=m;i++{
q:=inputs[ii]
ii++
fmt.Println(ans[q])
}
}
}
vartotalint
funcdfs1(cur,fatherint){
size[cur]=1
for_,next:=rangegraph[cur]{
ifnext!=father{
dfs1(next,cur)
size[cur]+=size[next]
ifsize[heavy[cur]]heavy[cur]=next
}
}
}
}
funcdfs2(cur,fatherint,isHeavybool){
for_,next:=rangegraph[cur]{
ifnext!=father&&next!=heavy[cur]{
dfs2(next,cur,false)
}
}
ifheavy[cur]!=0{
dfs2(heavy[cur],cur,true)
}
add(cur,father,heavy[cur])
ans[cur]=total
if!isHeavy{
delete(cur,father)
total=0
}
}
funcadd(cur,father,exceptint){
cnt[color[cur]]++
ifcnt[color[cur]]==1{
total++
}
for_,next:=rangegraph[cur]{
ifnext!=father&&next!=except{
add(next,cur,except)
}
}
}
funcdelete(cur,fatherint){
cnt[color[cur]]--
for_,next:=rangegraph[cur]{
ifnext!=father{
delete(next,cur)
}
}
}



声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
六千万欧!拜仁锋线再迎补强,曼城攻击手将至,凯恩出面邀请

六千万欧!拜仁锋线再迎补强,曼城攻击手将至,凯恩出面邀请

祥谈体育
2024-06-04 09:31:04
石人峡驴友遗体已找到!业内人士爆料真相 网友:红衣男子死的太冤

石人峡驴友遗体已找到!业内人士爆料真相 网友:红衣男子死的太冤

小怪吃美食
2024-06-04 22:36:37
民企的选择:一将功成万骨枯,你输掉的不仅仅是投资

民企的选择:一将功成万骨枯,你输掉的不仅仅是投资

永不出场的戈多
2024-05-23 17:50:07
中国男排3:0横扫巴林晋级八强迎战卡塔尔,发球差惹海宁暴怒

中国男排3:0横扫巴林晋级八强迎战卡塔尔,发球差惹海宁暴怒

宝哥精彩赛事
2024-06-05 03:12:02
法甲官宣新赛季用球:迪卡侬设计生产,白色搭配红黑

法甲官宣新赛季用球:迪卡侬设计生产,白色搭配红黑

直播吧
2024-06-04 16:17:10
俄外长发出提醒,中国要特别小心,美国导弹进驻菲可能只是个开始

俄外长发出提醒,中国要特别小心,美国导弹进驻菲可能只是个开始

赵探长TALK
2024-06-05 07:05:10
赖亚文只身返京述职!中国女排何去何从,赖导展现魄力的时候到了

赖亚文只身返京述职!中国女排何去何从,赖导展现魄力的时候到了

刺头体育
2024-06-04 21:27:09
“一丝不挂”新舞蹈?惹争议,被摸下体更不害臊,金星质疑是对的

“一丝不挂”新舞蹈?惹争议,被摸下体更不害臊,金星质疑是对的

吃鱼思故渊
2024-05-16 21:48:21
3分钟2球,2-1,奥地利豪取6连胜,状态爆棚,或成欧洲杯大黑马

3分钟2球,2-1,奥地利豪取6连胜,状态爆棚,或成欧洲杯大黑马

侧身凌空斩
2024-06-05 05:36:07
33岁刘翔再刷屏!肌肉炸裂,还撩走性感女私教!这样的人生我服了....

33岁刘翔再刷屏!肌肉炸裂,还撩走性感女私教!这样的人生我服了....

健身S叔
2024-05-04 14:37:27
成队内竞争了!金球赔率:维尼修斯居首,前四均为皇马球星

成队内竞争了!金球赔率:维尼修斯居首,前四均为皇马球星

直播吧
2024-06-04 14:52:03
风云突变!上海楼市,开始掀桌子了!

风云突变!上海楼市,开始掀桌子了!

米筐投资
2024-06-04 07:31:01
苏州通报“百余人参加婚宴上吐下泻”:留样菜品检出沙门氏菌,将处罚涉事企业

苏州通报“百余人参加婚宴上吐下泻”:留样菜品检出沙门氏菌,将处罚涉事企业

界面新闻
2024-06-04 20:38:42
家长:恢复八十年代的教材刻不容缓,现在的教材简直乱来!

家长:恢复八十年代的教材刻不容缓,现在的教材简直乱来!

李老师讲最真教育
2024-06-02 16:18:10
这两个新闻连在一起看,简直让人窒息

这两个新闻连在一起看,简直让人窒息

顾礼先生
2024-05-14 16:42:44
履新两年后,“红都圣地”瑞金市委书记,有新职务

履新两年后,“红都圣地”瑞金市委书记,有新职务

政知新媒体
2024-06-04 19:25:44
都体:德佩自宣离队,国米可能考虑免签

都体:德佩自宣离队,国米可能考虑免签

懂球帝
2024-06-04 13:05:13
杭州吹捧过多,实际上杭州远不如南京,事实又是什么?

杭州吹捧过多,实际上杭州远不如南京,事实又是什么?

创作者朱海平
2024-06-04 12:06:58
后续!45升油箱加出55.1升油,多方调查:真相曝光!加油站冤枉?

后续!45升油箱加出55.1升油,多方调查:真相曝光!加油站冤枉?

音乐时光的娱乐
2024-06-04 17:13:14
2001年,76位大汉伪装成农民工登上火车,制造出震惊全国的大案。

2001年,76位大汉伪装成农民工登上火车,制造出震惊全国的大案。

楚人说史
2024-06-03 14:01:54
2024-06-05 08:16:49
moonfdd
moonfdd
福大大架构师每日一题
411文章数 7关注度
往期回顾 全部

科技要闻

硬刚英伟达AMD 英特尔推出AI芯片Xeon 6

头条要闻

西安临潼区多辆公务车被指无牌上路行驶 记者采访被怼

头条要闻

西安临潼区多辆公务车被指无牌上路行驶 记者采访被怼

体育要闻

从英国联赛到NBA,两个美国人相爱相杀

娱乐要闻

杨幂留言为热巴庆生,姐妹情深惹人羡

财经要闻

六年四换帅,茅台到底经历了什么?

汽车要闻

2.0T+云辇-P+天神之眼 方程豹豹8还配软包内装

态度原创

健康
房产
亲子
教育
公开课

晚餐不吃or吃七分饱,哪种更减肥?

房产要闻

79.17亿!海开拿下永丰南地块 据说产品90平起

亲子要闻

男子打工回家想给孩子一个惊喜,谁知道却像陌生人一样!

教育要闻

刚刚,2025 QS 世界大学排名发布

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版