noip2019集训测试赛(二十一)Problem B: 红蓝树
noip2019集训测试赛(二十一)Problem B: 红蓝树
Description
每条边在初始时被染成蓝色。高桥君将进行N−1次操作,来把这棵蓝色的树变成红色的树。
* 选一条仅包含蓝色边的简单路径,并删除这些边中的一条。
* 然后在路径的两个端点中间连一条红色的边。
他的目标是,对于每一个i,都有一条红色的边连接ci和di。
现在请你判断是否可能达成他的目标。
Input
NN
a1 b1
⋮
aN−1 bN−1
c1 d1
⋮
cN−1 dN−1
Output
Sample Input
sample input 1:
3
1 2
2 3
1 3
3 2
sample input 2:
5
1 2
2 3
3 4
4 5
3 4
2 4
1 4
1 5
sample input 3:
6
1 2
3 5
4 6
1 6
5 1
5 3
1 4
2 6
4 3
5 6
Sample Output
sample output 1:
YES
sample output 2:
YES
sample output 3:
NO
HINT
样例 1 :
目标可以达成:
* 首先,选择连接顶点1和33的边,并移除1到2之间的蓝色边,并在1和3之间生成一条红色边;
* 然后,选择连接顶点2和3的边,并删去2和3之间的蓝色边,并在2和3之间生成一条红色边。
* 2≤N≤105
* 1≤ai,bi,ci,di≤N
* ai≠bi
* ci≠di
* 输入的两个图都是树。
解析:
如果可以做到将红树变为蓝树,那么在改变完N-2条边后,最后的没有连上一条蓝边必与最后一条红边重合
那么这一条重合的边可以在以前所有的连边中任意使用
那么我们可以对于原树中每一条既是红的又是蓝的边的两个端点缩成一个点(删去原本连接他们的边,再把其中一个点的所有边转到另一个点上,用启发式合并来缩点)
如果最终整棵树能够缩成一个点,那么就是YES,否则就是NO
启发式合并的总耗时是O(nlogn)
所以整个算法的时间复杂度是O(nlogn)
#include<iostream>
#include<cstdio>
#include<set>
using namespace std;
struct data{
int x,y;
}t[];
int n,m,f[],x,y,cnt;
set<int> v[];
int fa(int a){
if(f[a]!=a)f[a]=fa(f[a]);
return f[a];
}
void ins(int a,int b){
set<int>::iterator id1=v[a].find(b),id2=v[b].find(a);
if(id1==v[a].end()){
v[a].insert(b);
v[b].insert(a);
}else{
cnt++;
v[a].erase(b);
v[b].erase(a);
t[cnt].x=a;
t[cnt].y=b;
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n*-;i++){
scanf("%d%d",&x,&y);
ins(x,y);
}
for(int i=;i<=n;i++)f[i]=i;
while(cnt){
x=fa(t[cnt].x);
y=fa(t[cnt].y);
cnt--;
if(v[x].size()>v[y].size())swap(x,y);
f[x]=y;
for(int i:v[x]){
v[i].erase(x);
ins(i,y);
}
v[x].clear();
m++;
}
if(m==n-)printf("YES\n");
else printf("NO\n");
}
noip2019集训测试赛(二十一)Problem B: 红蓝树的更多相关文章
- noip2019集训测试赛(二十一)Problem A: Colorful Balls
Problem A: Colorful Balls Description Snuke放了N个一排彩色的球.从左起第i个球的颜色是ci重量是wi她可以通过执行两种操作对这些球重新排序操作1:选择两个相 ...
- noip2017集训测试赛(十一)Problem C: 循环移位
题面 Description 给定一个字符串 ss .现在问你有多少个本质不同的 ss 的子串 t=t1t2⋯tm(m>0)t=t1t2⋯tm(m>0) 使得将 tt 循环左移一位后变成的 ...
- 2016北京集训测试赛(十一)Problem C: 树链问题
Solution 智障暴力题, 每个点维护一下子树信息, 树剖就好了. 我居然还傻了写了一发毛毛虫... #include <cstdio> #include <cctype> ...
- 题解和总结——noip2019集训测试赛(一)贪吃蛇+字符串+都城
Problem A: 贪吃蛇 描述 Input Output Sample Input [样例输入1] 4 5 ##... ..1#@ 432#. ...#. [样例输出1] 4 [样例输入2] 4 ...
- 2016集训测试赛(二十一)Problem C: 虫子
题目大意 给你一棵树, 每个点有一个点权. 有两种操作: link / cut 修改某个点的点权 每次操作后, 你要输出以下答案: 在整棵树中任意选两个点, 这两个点的LCA的期望权值. Soluti ...
- 2016集训测试赛(二十六)Problem A: bar
Solution 首先审清题意, 这里要求的是子串而不是子序列... 我们考虑用1表示p, -1表示j. 用sum[i]表示字符串前\(i\)的前缀和. 则我们考虑一个字符串\([L, R]\)有什么 ...
- 2016集训测试赛(二十四)Problem B: Prz
Solution 这道题有两个关键点: 如何找到以原串某一个位置为结尾的某个子序列的最晚出现位置 如何找到原串中某个位置之前的所有数字的最晚出现位置中的最大值 第一个关键点: 我们注意到每个数字在\( ...
- 2016集训测试赛(二十四)Problem C: 棋盘控制
Solution 场上的想法(显然是错的)是这样的: 我们假设棋子是一个一个地放置的, 考虑在放置棋子的过程中可能出现哪些状态. 我们令有序整数对\((i, j)\)表示总共控制了\(i\)行\(j\ ...
- 2016集训测试赛(二十)Problem B: 字典树
题目大意 你们自己感受一下原题的画风... 我怀疑出题人当年就是语文爆零的 下面复述一下出题人的意思: 操作1: 给你一个点集, 要你在trie上找到所有这样的点, 满足点集中存在某个点所表示的字符串 ...
随机推荐
- macOS 系统下载地址
macOS Catalina macOS Mojave macOS High Sierra macOS Sierra 点击可以直接在MAC App Store下载,如果不能下载就多试几次.
- Ubuntu16.04启动tomcat缓慢问题之解决方案
问题信息: -May- ::] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of Secur ...
- HTTP Referrer和Referrer Policy 设置
referrer是HTTP请求header的报文头,用于指明当前流量的来源参考页面.通过这个信息,我们可以知道访客是怎么来到当前页面的.这对于Web Analytics非常重要,可以用于分析不同渠道流 ...
- 帮谷歌推广Webp图片格式之:Webp的格式转换
参考谷歌官网:Webp: A new image format for the Web Webp是Google强推的新一代网络图片格式,特点就是:高质量压缩.能压缩多少呢?5MB的原图,不降低效果,转 ...
- 【纸模】六角大王 Super 5.6 CHS 简体中文版 U20080725+[手册]窗口与工具的概要(PDF格式)
六角大王5.6简体中文版中文化:star21 主界面<ignore_js_op> 人体生成模式<ignore_js_op> 动画<ignore_js_op> < ...
- Binder 原理剖析***
一. 前言 希望更加深入理解 Binder 实现机制的,可以阅读文末的参考资料以及相关源码. 二. Binder 概述 简单介绍下什么是 Binder.Binder 是一种进程间通信机制,基于开源的 ...
- Vscode 保存文件就会自动添加注释
Vscode 保存文件就会自动添加注释 原因是:安装了插件造成的.. 文章来源:刘俊涛的博客 欢迎关注公众号.留言.评论,一起学习. _____________________________ ...
- https://lug.ustc.edu.cn/wiki/user/boj/linkers-and-loaders
https://lug.ustc.edu.cn/wiki/user/boj/linkers-and-loaders 程序员的自我修养——链接.装载与库
- cache-control: max-age=1,s-maxage=1
cache-control: max-age=1,s-maxage=1
- h2的时间类型和函数
H2时间类型: (时间)TIME: 格式为 hh:mm:ss.对应到Java类型:java.sql.Time. (日期)DATE: 格式为 yyyy-MM-dd.对应到Java类型: java.sql ...