当前位置:网站首页>leetcode299周赛记录
leetcode299周赛记录
2022-06-27 05:13:00 【nth2000】
从树中删除边的最小分数


思路
- 枚举每2条边,然后分类讨论:其中一条边以下的子树删除另一条边;或边位于不同子树。
- 关键点:如何判断结点层次,父节点子节点信息
- 利用时间戳:设置全局clock,dfs中结点每入栈记录入栈时间为clock+1,退栈时记录退栈时间为clock。则结点y是结点x的后代的充分必要条件是:
i n [ x ] ≤ i n [ y ] ≤ o u t [ y ] ≤ o u t [ x ] in[x] \leq in[y] \leq out[y] \leq out[x] in[x]≤in[y]≤out[y]≤out[x]
class Solution {
public:
int clock = 0;
int minimumScore(vector<int>& nums, vector<vector<int>>& edges) {
vector<int> adj[nums.size()];
for(auto& p : edges)
{
adj[p[0]].push_back(p[1]);
adj[p[1]].push_back(p[0]);
}
int c[nums.size()];
for(int i = 0;i<nums.size();i++) {
c[i] = 1001;}
int in[nums.size()];
int out[nums.size()];
function<int(int,int)> dfs = [&](int f,int cur)
{
in[cur] = clock++;
for(int v: adj[cur])
{
if(v!=f)
{
nums[cur] ^= dfs(cur,v);
}
}
out[cur] = clock;
return nums[cur];
};
dfs(-1,0);
//每个点的层次,叶节点的层次为0
int ans = INT_MAX;
queue<int> d;
c[0] = 1000;
d.push(0);
int cur = 1;
while(!d.empty())
{
int a = d.size();
while(a--)
{
int k = d.front();
c[k]=1000-cur;d.pop();
for(int v : adj[k])
if(c[v]>1000) d.push(v);
}
cur++;
}
for(int i = 0;i<edges.size() - 1;i++)
for(int j = i + 1;j<edges.size();j++)
{
vector<int> up = edges[i];
vector<int> down = edges[j];
if(max(c[edges[i][0]],c[edges[i][1]]) < max(c[edges[j][0]],c[edges[j][1]]))
{
up = edges[j];
down = edges[i];
}
int v = c[up[0]]<c[up[1]]?up[0]:up[1];
int m,n,l;
if(in[down[0]]>=in[v] && out[down[0]] <= out[v])
{
m = c[up[0]]>c[up[1]]?nums[up[1]]:nums[up[0]];
l = nums[0] ^ m;
n = c[down[0]]>c[down[1]]?nums[down[1]]:nums[down[0]];
m = m ^ n;
}
else
{
m = c[up[0]]>c[up[1]]?nums[up[1]]:nums[up[0]];
n = c[down[0]]>c[down[1]]?nums[down[1]]:nums[down[0]];
l = nums[0] ^ m ^ n;
}
ans = min(ans,max(max(m,n),l) - min(min(m,n),l));
}
return ans;
}
};
边栏推荐
猜你喜欢

微服务系统设计——微服务监控与系统资源监控设计

Microservice system design -- distributed cache service design

RTP 发送PS流工具(已经开源)

neo4j图数据库基本概念
![[unity] button of UI interactive component & summary of optional base classes](/img/9f/be9005f03ad9a2bc8da0f910f064c5.png)
[unity] button of UI interactive component & summary of optional base classes

golang hello 安装环境异常【已解决】

微服务系统设计——消息缓存服务设计

Web3还没实现,Web5乍然惊现!

【622. 设计循环队列】
![[station B up dr_can learning notes] Kalman filter 1](/img/18/ee21d31f6a118e4e4ad466b55361cc.gif)
[station B up dr_can learning notes] Kalman filter 1
随机推荐
013 C语言基础:C指针
three.js第一人称 相机前枪的跟随
Edge在IE模式下加载网页 - Edge设置IE兼容性
Discussion on streaming media protocol (MPEG2-TS, RTSP, RTP, RTCP, SDP, RTMP, HLS, HDS, HSS, mpeg-dash)
【622. 设计循环队列】
导航【机器学习】
Epics record reference 5 -- array analog input recordarray analog input (AAI)
【B站UP DR_CAN学习笔记】Kalman滤波2
leetcode-20. Valid parentheses -js version
【B站UP DR_CAN学习笔记】Kalman滤波3
微服务系统设计——服务注册与发现和配置设计
【C语言】关键字的补充
Microservice system design -- microservice invocation design
【Unity】UI交互组件之按钮Button&可选基类总结
渗透测试-文件上传/下载/包含
【B站UP DR_CAN学习笔记】Kalman滤波1
The most detailed download tutorial of MySQL
Microservice system design -- API gateway service design
面试:Selenium 中有哪几种定位方式?你最常用的是哪一种?
Zener diode zener diode sod123 package positive and negative distinction