CF1325C Ehab and Path-etic MEXs
CF神奇构造题
题目大意
给出一颗 NNN 个节点树,每条边有边权,边权为 000 到 N−2N-2N−2 的整数,且不重复,使得任意两点的简单路径的MEX的最大值最小.(MEX指第一个没有出现过的非负整数)
分析
对于MEX最重要自然是 000,而且因为是树,所以必然可以做到将 000 和 111 放入同一条树链中,那么就要考虑 222 的位置了,不可以让他出现在这条树链中,理解一下就是必须有一个点的度至少为 333,即这个图不是一条链,那么就有一种非常容易的方法,将 0,1,20,1,20,1,2 放在三个度为 111 的点的边上,这样就不可能出现 0,1,20,1,20,1,2 同时出现在一条链上,其他也就可以乱放了,如果是一条链无论怎么放MEX都可以达到 N−1N-1N−1,所以可以直接乱放.
代码
#include<bits/stdc++.h>
#define REP(i,first,last) for(int i=first;i<=last;++i)
#define DOW(i,first,last) for(int i=first;i>=last;--i)
using namespace std;
const int MAXN=114514;
int N,M;
int T;
int out[MAXN];//记录度
int p[MAXN];//比较懒,不想存图,所以就只记录一下每个点最后一条出边,反正最后有影响的之后度为1的点,所以没关系
int answer[MAXN];//记录答案
void work()
{scanf("%d",&N);int f,t;REP(i,1,N-1){scanf("%d%d",&f,&t);out[f]++;out[t]++;p[f]=p[t]=i;}if(N==2)//注意特判2{printf("%d",0);return;}int cnt=0;REP(i,1,N){if(out[i]==1)//在前三个度为1的点的出边赋值上0,1,2,为了方便处理这里就用了1,2,3{answer[p[i]]=++cnt;if(cnt==3){break;}}}REP(i,1,N-1)//输出{if(answer[i])//如果有答案就输出答案{printf("%d\n",answer[i]-1);}else//没有反正可以乱输出{++cnt;printf("%d\n",cnt-1);}}
}
int main()
{work();return 0;
}
CF1325C Ehab and Path-etic MEXs相关推荐
- CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序)
CF628 C.C. Ehab and Path-etic MEXs(思维+拓扑排序) 题目链接 题意:没咋看懂,它的题解是度数最高的分配后其他的随便分配. 我做的是,从子节点往上面,依次加,拓扑排序 ...
- 【字源大挪移—读书笔记】 第一部分:字首
[1] 字首:[1.1]表示[否定]的字首.[1.2]表示[方位]的字首.[1.3]表示[程度]的字首.[1.4]表示[状态.现象]的字首.[1.5]表示[数字]的字首 [1.1] 表示[否定]的字首 ...
- Codeforces round #628 C.Ehab and Path-etic MEXs
Codeforces round #628 C.Ehab and Path-etic MEXs You are given a tree consisting of n nodes. You want ...
- [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 ...
- Codeforces Round #649 (Div. 2)C. Ehab and Prefix MEXs[排列的构造]
C. Ehab and Prefix MEXs 题目大意: 解题思路:题目说保证a数组是非递减的,那么如果某位置a[i]!=a[i−1]a[i]!=a[i-1]a[i]!=a[i−1]那么这个位置ii ...
- Codeforces Round #628 (Div. 2)C - Ehab and Path-etic MEXs
C - Ehab and Path-etic MEXs 题目链接 简要描述: 从一个点到另一个点出发,所经过的边组成一个集合, 这些集合中所不包含的最小自然数为mex(u,v),要求使所有的mex(u ...
- Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs
C. Ehab and Path-etic MEXs 题目链接-C. Ehab and Path-etic MEXs Note The tree from the second sample: 题目大 ...
- [codeforces 1325C] Ehab and Path-etic MEXs 绕不开的叶节点+特判
Codeforces Round #628 (Div. 2) 比赛人数9400 [codeforces 1325C] Ehab and Path-etic MEXs 绕不开的叶节点+特判 总 ...
- Ehab and Path-etic MEXs CodeForces - 1325C(思维+贪心)
You are given a tree consisting of n nodes. You want to write some labels on the tree's edges such t ...
最新文章
- 网络工程与机房等精华指引贴
- JAVA基础代码分享--模拟人机猜拳系统
- 从上百幅架构图中学大型网站建设经验(上)
- 猎豹产品经理:「全球化产品」应该要避开的几个坑
- python局部静态变量_全局变量、局部变量和静态变量
- Eclipse使用TODO标签管理任务及自定义TODO标签
- wpf 依赖强制回调
- 使用MesaSQLite入库CSV文件
- python全栈构图_Python全栈-magedu-2018-笔记5
- python基础系列教程——Python3.x标准模块库目录
- [置顶] Android之Handler用法总结
- 无法获取有关 Windows NT 组/用户 'WIN-*******\********' 的信息,错误代码 0x534。 [SQLSTATE 42000] (错误 15404))....
- HDFS存储大量小文件的问题及解决方案
- 极简fseek()函数讲解,一分钟掌握
- 新浪云HTML播放音乐,音乐播放器-html代码
- 伦敦大学计算机研究生雅思要求,【留学科普】伦敦TOP10大学雅思要求来了!你够得上吗?...
- 【转】我是一个INFP者
- Android开发之仿360手机卫士悬浮窗效果
- [图论]---[网络流]---最小点割数/最小点割集
- SQL Server数据库创建数据库、用户、表和插入数据(Transact-SQL)