Ehab and Path-etic MEXs

题意:给定一棵树所有的边,对所有的边进行标号,询问任意两点Mex的最大值最小的的标号方案(输出任何一种)。

Mex(u,v)表示从u到v的简单路径中没有出现的最小标号。

思路:(借鉴大佬的)

如果树是一条链,那么任何标号方案对首尾两端的  都不会影响,直接输出  到 即可;

其余情况可以证明  最大值的最小值一定为  :

(1)无论如何安排,标  边和标  边一定存在公共路径联通;

(2)对于非链的树一定存在  ,  的安排方式使得存在边不在, 的任何公共路径上。在该边上标  即可满足不存在的公共路径。

有两种比较简洁的实现方式:

(1)找到三个度为  的点,选取这三个点的临边,标为,其余任意;

(2)找到一个度大于等于  的点,选取它的三个临边。

#include<bits/stdc++.h>
const int maxn= 1e5+100;
using namespace std;
int a[maxn],b[maxn],num[maxn];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
{
scanf("%d%d",&a[i],&b[i]);
num[a[i]]++;num[b[i]]++;
}
int op = 0;
for(int i=1;i<=n;i++) if(num[i]>=3) {op = i; break;}
if(!op) for(int i=0;i<n-1;i++) printf("%d\n",i);
else
{
for(int i=1,cnt1=0,cnt2=3;i<n;i++)
{
if((a[i]==op || b[i]==op) && cnt1<=2) printf("%d\n",cnt1++);
else printf("%d\n",cnt2++);
}
}
return 0;
}

最新文章

  1. TinyPNG---一个压缩PNG的神站
  2. python 清楚数组重复字符串元素
  3. [转载] 使用异步 I/O 大大提高应用程序的性能
  4. PO_PO系列 - 收货管理分析(案例)
  5. eclipse开发android程序常见问题解决办法
  6. java-String中的 intern()&lt;转&gt;
  7. 使用Echarts的五个步骤
  8. PS:抠图方法1(利用对比度ctrl+l)
  9. JAVA课程设计---学生基本信息管理系统(201521123039 王兴)
  10. 【bzoj1103】【POI2007】【大都市】(树状数组+差分)
  11. [bzoj1316] 树上的询问
  12. bash语法
  13. 前端工程师必须要知道的HTTP部分
  14. navicat primium 快捷键与命令
  15. 如何用java POI将word中的内容导入到mysql数据库中
  16. CMD下进入MYSQL的命令
  17. nginx 中配置多个location并解决js/css/jpg/等的加载问题
  18. golang fatal error: concurrent map read and map write
  19. 开源且功能强大的C# 扩展方法类库Pure.Ext,包含1000+个拓展方法 (支持.Net Framework和.Net Core)
  20. 16bit C &amp; ASM 如何混合编译?

热门文章

  1. 速查列表:Apache SkyWalking OAL 的 域(Scopes)
  2. golang redis
  3. 关于Cloudfront能否接入NLB的讨论
  4. Django——实现最基础的评论功能(只有一级评论)
  5. VS dll 引用依赖
  6. python 并行计算
  7. NAT-T下的端口浮动
  8. 【第二篇】- Git 安装配置之Spring Cloud直播商城 b2b2c电子商务技术总结
  9. 【第六篇】- Maven 仓库之Spring Cloud直播商城 b2b2c电子商务技术总结
  10. 6步快速配置Tomcat环境变量(Win10)