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上找到所有这样的点, 满足点集中存在某个点所表示的字符串 ...
随机推荐
- 页面中的radio选择适合的非空判断
var cyjb=$('input:radio[name="jcrwModel.cyjb"]:checked').val(); if(cyjb==n ...
- svn服务备份与还原
1.dump备份方式: svnadmin dump /data/svn/xxxx > /data/beifen/`date +/%Y%m%d`.bak xxxx:项目名称(项目库) 将xxxx这 ...
- 开放-封闭原则(OCP)
怎样的升级才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?开放-封闭原则(The Open-Closed Principle, OCP)为我们提供了指引.软件 ...
- [XLua]热更新四部曲视频教程+示例源码
基于Unity2017 xLua是由腾讯维护的一个开源项目,xLua为Unity. .Net. Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用.自20 ...
- 文献阅读 | Benchmarking single cell RNA-sequencing analysis pipelines using mixture control experiments
资源: sci-hub paper CellBench package - github CellBench_data - code for the paper 现在单细胞领域的突出问题就是工具过多, ...
- SpringBoot访问不了JSP但却能进入后台
博主在使用sring-boot跳转HTML页面后,由于好奇心就想跳转到JSP页面,就在网上搜相关信息,结果不是跳转500错误就是下载JSP文件.各种坑啊,在博主跳了N多坑后,终于跳转JSP页面成功.故 ...
- android studio: 对齐成员变量及链式方法
"File"-"Settings"-"Editor"-"Java"-"Wrapping and Braces& ...
- ZingChart line 折线图表数据设置
根据 x 坐标和 y 坐标一一对应进行设置 (x,y) { "type": "line", "series":[ {,],[,],[,],[ ...
- postgresql 臭氧8小时聚合函数
1.定义数据拼接函数 CREATE OR REPLACE FUNCTION "public"."sfun"("results" _numer ...
- DDos攻击解决办法
(1).DDos概念 分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控 ...