欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

codeforceC.EhabandPath-eticMEXs

时间:2023-05-30

题目大意:有一颗n个结点的树 ,现在让你分配每条边的权重,使得任意两个点之间的所有边的MEX值尽可能的小。

题解:寻找两个隶属于同一父亲的叶子节点,将两条边分别赋值为0和1,那么所有路径上的MEX值最大为1。显然由于0的存在,MEX不可能为0,所以1就是最小值。

 

#includeusing namespace std;const int maxn = 2e5 + 10;vectorg[maxn];struct node {int u, v;}e[maxn];int main(){int n, k;cin >> n;int x, y;for (int i = 1; i <= n - 1; i++){cin >> x >> y;g[x].push_back(y);g[y].push_back(x);e[i].u = x;e[i].v = y;}int mx = n - 2, mi = 0;for (int i = 1; i < n; i++){if (g[e[i].u].size() == 1 || g[e[i].v].size() == 1){cout << mi++ << endl;}else cout << mx-- << endl;}}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。