[Luogu-CF1131F]

给定n个点的序列,一开始有n个块,每次将两个块合并,并告诉你这两个块中的一对元素,求一种可能的原序列

我们可以建立一个由多个二叉树组成的森林,并用并查集维护每个节点所在二叉树的根节点。

具体是这样的,如果当前是将\(x_{i},y_{i}\)所在的连通分量放在相邻的位置上,那么就将他们所在二叉树的根节点​作为它们新的根节点。

然后在整个二叉树上进行dfs,得到的序列就是答案。

原理很显然,因为这样能保证一个非叶节点的左右儿子为相邻的连通分量。

#include<cstdio>
#define Rint register int
using namespace std;
const int N = 300003;
int n, cnt, fa[N], head[N], to[N << 1], nxt[N << 1];
inline void add(int a, int b){static int cnt = 0;to[++ cnt] = b; nxt[cnt] = head[a]; head[a] = cnt;
}
inline int getfa(int x){return x == fa[x] ? x : fa[x] = getfa(fa[x]);
}
inline void dfs(int u){if(u <= n){printf("%d ", u); return;}for(Rint i = head[u];i;i = nxt[i])if(to[i] != fa[u]) dfs(to[i]);
}
int main(){scanf("%d", &n); cnt = n;for(Rint i = 1;i <= (n << 1);i ++) fa[i] = i;for(Rint i = 1;i < n;i ++){int a, b;scanf("%d%d", &a, &b);a = getfa(a); b = getfa(b);add(++ cnt, a); add(cnt, b);fa[cnt] = fa[a] = fa[b] = cnt;}dfs(cnt);
}

转载于:https://www.cnblogs.com/lizehon/p/10521069.html

CF1131F Asya And Kittens相关推荐

  1. [CF1131F] Asya And Kittens

    Description: 给定n个点的序列,一开始有n个块,每次将两个块合并,并告诉你这两个块中的一对元素,求一种可能的原序列 Hint: \(n \le 1.5*10^5\) Solution: 实 ...

  2. 【CodeForces - 1131F 】Asya And Kittens(并查集,思维)

    题干: Asya loves animals very much. Recently, she purchased nn kittens, enumerated them from 11 and nn ...

  3. Asya And Kittens

    https://codeforces.com/contest/1131/problem/F 题解:并查集+路径压缩+DFS+树 /* *@Author: STZG *@Language: C++ */ ...

  4. F. Asya And Kittens

    http://codeforces.com/contest/1131/problem/F 题意:有n只猫相邻有隔板隔着,n-1对(x,y)输入表示取下某一隔板能使x与y猫在一起,取下后两笼合并,里面的 ...

  5. php网页爬虫-简单的类

    class PhpSpiders { public $useragent ; //user-agent public $title ; // 标题 public $encoding ; //编码 pu ...

  6. Codeforces Round #541 (Div. 2)

    Codeforces Round #541 (Div. 2) 题号 题目 知识点 A Sea Battle 思维 B Draw! 贪心模拟 C Birthday 思维 D Gourmet choice ...

  7. Codefroces1077F2. Pictures with Kittens (hard version)

    Codefroces1077F2. Pictures with Kittens (hard version) 做法:裸的单调队列优化dp #include <bits/stdc++.h> ...

  8. Codeforces 1077F2 Pictures with Kittens (hard version)(DP+单调队列优化)

    题目链接:Pictures with Kittens (hard version) 题意:给定n长度的数字序列ai,求从中选出x个满足任意k长度区间都至少有一个被选到的最大和. 题解:数据量5000, ...

  9. Codeforces Round #521 (Div. 3): F. Pictures with Kittens(DP+单调队列)

    题意: 你有n幅画,第i幅画的好看程度为ai,再给你两个数字k,x,表示你要从中选出刚好x幅画,并且相邻两幅画的距离不能≥k,好看程度之和最大能多少,选不出来输出-1,F1数据范围<200,F2 ...

最新文章

  1. 【 FPGA 】FIR 滤波器之Single-rate FIR滤波器的系数数据(Filter Coefficient Data)
  2. 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...
  3. 自建DNS服务器,了解一代防火墙必备网络环境,局域网设备域名访问教程
  4. Python编程基础:第三十九节 面向对象编程Object Oriented Programming
  5. Vue.js——十分钟入门Vuex
  6. ER图转换成关系模式集的规则
  7. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(2)
  8. 更改select里面的值
  9. SNPP/VIIRS 数据介绍和下载
  10. nginx安装问题 Makefile Error 127
  11. 树莓派python编程小车_树莓派智能车AlphaBot教程11:Python 网络编程
  12. 西威驱动板PV33-4 电源驱动板图纸 37千瓦左右基本一样 文件发送非实物
  13. ETL数据抽取 全量 增量
  14. 万能收钱码-多合一收款二维码原理及源码-支持支付宝、微信、QQ
  15. 浮点数取绝对值的方法
  16. 全面解读流程图|附共享单车摩拜ofo案例分析
  17. OpenFOAM中重力的植入方式
  18. 查看windows显卡内存详细信息
  19. python将一个正整数分解质因数
  20. 基于MATLAB/Simulink的电力电子电路仿真技术——三相电流滞环跟踪逆变器

热门文章

  1. 接上篇《旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标》,理解欧拉角:内旋;外旋;万向节死锁
  2. 问卷调查抽奖系统开发
  3. 电视盒子有哪些软件支持电视节目回看?
  4. css !important用法以及CSS样式使用优先级判断
  5. 寻仙手游维护公告服务器停服更新,寻仙手游新服更新内容汇总 新坐骑黑鸾幽煌上线...
  6. 如何选定搭建个人独立博客工具
  7. 奥利给!2020年10月程序员工资最新统计,涨了!!!
  8. 实现八大行星绕太阳3D旋转效果,这波操作不来喊个666?
  9. Zynq和FPGA区别——快速认识Zynq开发
  10. natapp实现内网穿透(详解)