当前位置: 首页> 汽车> 报价 > 2023年北京疫情最新消息_五大常用办公软件_百度一下百度网页版进入_免费制作网站

2023年北京疫情最新消息_五大常用办公软件_百度一下百度网页版进入_免费制作网站

时间:2025/7/12 6:58:14来源:https://blog.csdn.net/2301_81608637/article/details/146341652 浏览次数: 1次
2023年北京疫情最新消息_五大常用办公软件_百度一下百度网页版进入_免费制作网站

F. 小紫的树上染色

        任意指定一个根节点,先深搜到叶子结点,然后退上来的时候加上子树贡献,一旦到二分 mid,需要染紫的节点数就加1,最后和 k 比一下,看能不能在 k 个紫色内符合 mid

        对于每一个父节点再算儿子的贡献时,一定要等所有儿子贡献全部加上再判,否则就会有子树因为提前 return 而遍历不到。

        遍历树不需要 vis 数组,带上 fa 不能回退就可以了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5, INF = 1e18;int T, n, k, cnt, ans;
vector<int> G[N];int dfs(int u, int fa, int mid)
{int res = 0;for (auto v : G[u]){		if (v != fa)res += dfs(v, u, mid);}if (res + 1 > mid){cnt ++;return 0;}return res + 1;
}bool check(int mid)
{cnt = 0;int a = dfs(1, 0, mid);return cnt <= k;
}signed main()
{cin >> n >> k;for (int i = 1; i < n; i ++){int u, v;cin >> u >> v;G[u].push_back(v), G[v].push_back(u);}int l = -1, r = n + 1, mid;while (l + 1 < r){mid = l + (r - l) / 2;if (check(mid))r = mid;elsel = mid;}cout << r;return 0;
}
关键字:2023年北京疫情最新消息_五大常用办公软件_百度一下百度网页版进入_免费制作网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: