https://www.luogu.com.cn/problem/CF1325C

题意翻译

给定一个 nn 个节点 n-1n−1 条边的树

要求给边重新标注边权

分别为 0,1,2...n-20,1,2...n−2 。

然后使得树上任意两点 u,vu,v 的 \mathrm{MEX}(u,v)MEX(u,v) 的最大值最小。

\mathrm{MEX}(u,v)MEX(u,v) 是 uu 到 vv 的简单路径没有出现的自然数中最小的数。

翻译人:do_while_false


思路:树构造可以先尝试从小的链子开始,可以发现小的链子上只能是全部数字都存在。那么稍微变化一点,变成一棵树,那么会发现总能存在一条路包含0和1,那么尝试构造0,1,2不在同一条路上。

把 0,1,2 作为与这个结点相邻的任意 3 个结点与其连边的边权,其他边随意赋值即可,这样 保证最小值为2。

用邻接表存下每个点后面连的是第几号边,同时统计每个点的度数,遇到了>=3的度数的点的时候把这个点对应的三条边全部标记成0,1 ,2.

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5+100;
typedef long long LL;
LL deg[maxn],cnt;
LL vis[maxn];
vector<LL>g[maxn];
int main(void)
{cin.tie(0);std::ios::sync_with_stdio(false);LL n;cin>>n;for(LL i=1;i<n;i++){LL a,b;cin>>a>>b;g[a].push_back(i);g[b].push_back(i);deg[a]++;deg[b]++;}bool flag=1;for(LL i=1;i<n;i++){if(deg[i]>=3) flag=0;}if(flag==1){LL ans=0;for(LL i=0;i<n-1;i++){cout<<i<<endl;}return 0;}LL num=0;for(LL i=1;i<=n;i++){if(deg[i]>=3){for(LL j=0;j<3;j++) vis[g[i][j]]=++num;break;}}for(LL i=1;i<n;i++) if(!vis[i]) vis[i]=++num;for(LL i=1;i<n;i++) cout<<vis[i]-1<<endl;
return 0;
}

Ehab and Path-etic MEXs(思维+构造)相关推荐

  1. C. Ehab and Path-etic MEXs(思维+构造)

    题意:给你一颗n个点的树,用[0,n-2]去给n-1条边编号,使得mex(u,v)的最大值最小. mex(u,v)表示任意两点的简单路径中不在这条边上的最小非负整数. 思路: 这个题目好巧妙啊~~~~ ...

  2. CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序)

    CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序) 题目链接 题意:没咋看懂,它的题解是度数最高的分配后其他的随便分配. 我做的是,从子节点往上面,依次加,拓扑排序 ...

  3. [Codeforces Round #628]1325C - Ehab and Path-etic MEXs[思维][图]

    1325C - Ehab and Path-etic MEXs[思维][图] time limit per test memory limit per test input output 1 seco ...

  4. CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)

    题目链接:点击查看 题目大意:给出一个 n,再给出一个 x,要求构造一个数列,满足该数列的所有子串的异或和都不等于 0 且都不等于 x,在满足上面的条件下尽可能长 题目分析:因为这个题目最终的目标是需 ...

  5. Codeforces C. Ehab and Path-etic MEXs (树 / 构造 / MEX)

    传送门 题意: 给定一个 n 个节点 n−1 条边的树,要求给边重新标注边权,分别为 0,1,2-n-20,1,2-n−2 .然后使得树上任意两点 u,v的 MEX(u,v) 的最大值最小. MEX( ...

  6. Codeforces 1325C. Ehab and Path-etic MEXs(构造)

    Description You are given a tree consisting of n nodes. You want to write some labels on the tree's ...

  7. Codeforces round #628 C. Ehab and Path-etic MEXs(构造)

    讲解:https://www.cnblogs.com/Sxy_Limit/p/12495969.html #include<cstdio> #include<cstring> ...

  8. 【CodeForces - 798D】Mike and distribution (思维构造,贪心,黑科技)

    题干: Mike has always been thinking about the harshness of social inequality. He's so obsessed with it ...

  9. CodeForces - 1504C Balance the Bits(思维+构造)

    题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...

最新文章

  1. 神经网络与机器学习 笔记—Rosenblatt感知机
  2. SQL案例_0_员工表数据集
  3. 不用虚拟机直接在线用的 Linux,统统都在这里!
  4. 升级tomcat7.0之后的问题
  5. linux系统证书存储,Linux系统下如何配置Nginx的SSL安全证书
  6. L8ER的完整形式是什么?
  7. ASP.NET Core Web API/MVC应用中间件中的Cookie记录
  8. python将object转换为float_如何在python中将datatype:object转换为float64?
  9. paip.python错误解决24
  10. Linux入门——开机启动过程浅析
  11. 复杂网络分析工具及其比较(转)
  12. 数模(8)——排队论模型
  13. elementUI---使用按钮切换折叠侧边栏
  14. Centos 7 磁盘分区
  15. 计算机如何重新进行硬盘分区,最简单办法,如何在不重装电脑系统的情况下对硬盘进行重新分区-电脑怎么分区...
  16. 求求你了!别瞎提交代码了,看人家 Git 提交规范那叫一个舒服!
  17. vue 使用高德地图插件 vue-amap
  18. 自动化脚本腾讯云配置集群(三)批量修改host
  19. Linux服务器下载日志到本地
  20. 上位机与下位机交互--让socket不死

热门文章

  1. 【推荐架构day5】今日头条算法的基本原理
  2. 华南师范大学计算机课网址,华南师范大学网络课程 首页
  3. the second day
  4. Win32病毒入门(一)
  5. 学日语、记单词是有规律的(转载)
  6. 路缘石滑模机脱离预制作业追赶施工效率
  7. ATM机跨行取款也有理财窍门
  8. Psins代码解析之kalman松组合导航融合算法 test_SINS_GPS_153.mtest_SINS_GPS_186.mtest_SINS_GPS_193.m
  9. pygame开发飞机大战外星人游戏
  10. 6.25 周测题目整理