#423 Div2 D

题意

构造一个 n 个节点的树,恰好有 k 个叶子节点 (叶子节点的定义是只与树上的某一个节点存在连边),要求任意两个叶子节点的距离的最大值最小,距离为两个节点间边的数量,输出距离的最大值,以及 n - 1 条边。

分析

构造 “星型树” ,节点 1 为中心,首先连 k 条边到 k 个节点,对于多的点,周期性的绕最外层的 k 个点不断连接即可。

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5 + 5;
typedef pair<int, int> P;
vector<P> ans;
vector<int> v1, v2;
int main() {
int n, k;
cin >> n >> k;
n--;
n -= k;
int lens = 2;
for(int i = 2; i <= k + 1; i++) {
ans.push_back(P(1, i));
v1.push_back(i);
}
int z = k + 2;
while(n) {
lens++;
if(n > 1) lens++;
for(int i = 0; i < v1.size() && n > 0; i++) {
ans.push_back(P(v1[i], z));
v2.push_back(z);
z++; n--;
}
v1.clear();
v1 = v2;
v2.clear();
}
cout << lens << endl;
for(int i = 0; i < ans.size(); i++) {
cout << ans[i].first << " " << ans[i].second << endl;
}
return 0;
}

最新文章

  1. jquery的css详解(二)
  2. 启用数据库的 Service Broker
  3. (转) C/C++中const关键字详解
  4. java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
  5. 使用Unity制作游戏关卡的教程(一)
  6. poj 3301 Texas Trip 三分法
  7. glog摘记
  8. 模板:使用new delete 创建二维数组
  9. GML、SVG、VML的比较
  10. Accesss数据库的DBhelper类(带分页)
  11. 010 socket定义服务器
  12. SpringBoot使用日志
  13. docker学习笔记(3)
  14. Linux如何查看端口
  15. C# 对象持久化
  16. ruby安装sass和compass步骤
  17. TStringList 常用方法与属性
  18. 1127 ZigZagging on a Tree (30 分)
  19. Python 百度ai身份证接口案例
  20. UML九种图 之 用例图和类图

热门文章

  1. lnmp一键安装环境中nginx开启pathinfo
  2. 基于Python的selenuim自动化测试尝试
  3. selenium界面元素定位
  4. 1.0 python-client以及ui自动化介绍
  5. 决策树之CART算法
  6. 团队项目-第三次scrum 会议
  7. Mysql 查询—按位运算
  8. linux下如何修改进程优先级?
  9. 三、vue依赖收集
  10. P3200 [HNOI2009]有趣的数列