题目链接:https://codeforces.com/problemset/problem/1283/F

题意描述:
给定n−1条线和n座灯。
有一个灯是源灯,所有电都从这来。

一跟电线连接两个灯,每个灯有自己的编号,亮度为2i。
灯分为主灯和副灯,电源从主灯来,流向副灯。
每条电线的重要程度为切断这个电线之后不能通电的亮度之和。
按照电线的重要性从大到小给出了n−1条线的主灯编号,让你从大到小输出每条电线连接的两个灯的序号。

思路:

首先n−1条线和n座灯,可以确定这个结构是一棵树。
题目按照电线重要性给出了节点的主灯,那么第一个必然是源灯,因为连接源灯的电线重要性肯定最大。
其次叶子节点一定不是主灯,而且我们知道叶子节点的子树大小为0。(用deg数组记录子树大小)
所以我们可以先找出所有的叶子节点压入优先队列,之后倒序连接主灯。(因为电线的重要程度是从大到小给出的)。
连接之后将其看成一体,这样主灯子树大小就可以减一了。
当主灯的子树大小减为0时,就变成了叶子节点,加入队列;如此循环往复直到形成一棵树。

code:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
int deg[maxn], n, rt;
vector<int> main_lamp;
int main()
{scanf("%d", &n);scanf("%d", &rt);deg[rt]++;main_lamp.push_back(rt);for(int i = 2, x; i <= n - 1; i++){scanf("%d", &x);deg[x]++;main_lamp.push_back(x);}priority_queue<int, vector<int>, greater<int> > q;for(int i = 1; i <= n; i++)if(deg[i] == 0) q.push(i);vector<pair<int, int> > ans;while(q.size()){int x = q.top();q.pop();int y = main_lamp[main_lamp.size()-1];main_lamp.pop_back();ans.push_back(make_pair(y, x));if(ans.size() == n - 1) break;deg[y]--;if(deg[y] == 0) q.push(y);}cout << rt << endl;for(int i = ans.size()-1; i >= 0; i--)cout << ans[i].first << " " << ans[i].second << endl;return 0;
}

构图 -- F. DIY Garland相关推荐

  1. 主板芯片介绍---Via芯片组(三)

    在"龙芯"出世以前,VIA就已经生产自家的CPU了:在INTEl,ATI,Nvidia芯片组在中国市场上"横冲直撞"时,VIA生产的芯片组不仅负起了狙击的作用, ...

  2. LB-createLB整理架构图-loadbalancer-openstack F版

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  3. 深度学习、AI构图、智能裁图、显著性检测、美感质量评价

    深度学习.AI构图.智能裁图.显著性检测.美感质量评价 基于美感数据集和改进的Alexnet-SPP的AI构图智能裁图 基于美感数据集和改进的Alexnet-SPP的显著性检测 部分代码下载地址:下载 ...

  4. Discuz常见大问题-如何DIY一个独立页面

    首先参考Discuz如何自定义单个页面的文章,确保你已经能做一个"关于我们"这种纯HTML静态页面(只有文字和静态图片描述).其次参考下面的文件修改原来的htm文件 注意我用红色标 ...

  5. PXE BOOT DIY自己的网络启动工具集合

    大家对深山红叶,矮人DOS工具箱之类的维护光盘应该不陌生了,作为企业,网吧网管,随手准备这样的光盘真的是能解决很多问题.对于网刻,相信很多人也有所了解.但是,在网吧/公司维护机器时.基本上面对的都是无 ...

  6. 怎么DIY一个粒子检测器

    01在家带娃能干什么?   最初是在今日头天-大数据文摘(2020-09-28)看到一篇文章 在家做核子研究:怎么DIY一个粒子检测器 ,介绍了Steve Foster(一个刚刚退休英国中央银行 TI ...

  7. Micropython实例之TPYBoardv102开发板DIY照相机

    2019独角兽企业重金招聘Python工程师标准>>> 摄像头(CAMERA或WEBCAM)又称为电脑相机.电脑眼.电子眼等,是一种视频输入设备,被广泛的运用于视频会议,安防系统   ...

  8. POJ-2391 Ombrophobic Bovines 网络流-拆点构图

    题意:有F快草地,每块草地上有若干奶牛也有避雨点,每个避雨点只能够容纳一定量的奶牛.草地之间有边.现在问所有牛全部到达避雨点的时间是多少? 解法:这题和POJ-2112非常相似,做法也差不多,foly ...

  9. HDOJ 1224 Free DIY Tour

    简单DP Free DIY Tour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

最新文章

  1. 用开放地址法中的线性探查法解决冲突实现哈希表的运算
  2. (四)系统虚拟化关键技术
  3. jquey(判断文本框输入的网址链接是否符合规则)
  4. 用python批量创建docker_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3...
  5. 小米键盘 键盘切换_“年轻人的第一把机械键盘”,小米机械键盘到底值不值...
  6. 电商如何“链”动新春,看聚划算助力“原年人”的好日子
  7. Python_列表2
  8. css中如何实现导航栏横向,css横向导航栏
  9. UltraEdit键盘快捷键
  10. [收藏学习]Openstack中Keystone及dashboard安装参考
  11. 安装SqlServer2014出现(‘无法启动 Windows Management Instrumentation 服务。若要继续安装,必须找到问题并修复该服务‘)
  12. Layui 表格table 第一次加载动态设置列
  13. Ascll完整码表(256个)
  14. python模拟火车票订票系统_除夕火车票明天开售,上海各大火车站售票时间都在这...
  15. Polarized 3D翻译
  16. 学计算机拼音摇号,电脑摇号:作弊100%!
  17. 用于商用微处理器的快速位收集、位分散和位置换指令(一)
  18. Linux中磁盘分区清理方法
  19. 论文阅读三:GHM《Gradient Harmonized Single-stage Detector》
  20. 今天给大家讲一个鬼故事

热门文章

  1. 电气simulink常用模块_「西门子1200PLC教程」2.CPU家族及模块
  2. 我和 XOP的 醉生梦死
  3. [Matlab科学计算] 使用Kriging工具箱进行简单的插值计算
  4. 项目经理必备——软件报价
  5. 腾讯内容处理和分发中的算法应用探究
  6. informa医药数据库
  7. 中兴a2018刷android,中兴A2018刷机教程 中兴A2018 天机7S卡刷升级更新官方系统
  8. 顶尖文案app_topys顶尖文案app下载
  9. JDBC 到 ORM 的事务实现
  10. 链路层典型协议(简述)