comet#8
时间:2019-09-12
本文章向大家介绍comet#8,主要包括comet#8使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<bits/stdc++.h> using namespace std; const int N=1e5+333; vector<int>v[N]; int dep1[N],dep2[N]; int maxd1,maxd2; int n; struct re{ int poi,val; bool operator <(const re &az)const{ return val<az.val; } }; priority_queue<re>s; int dfs1(int fath,int x){ dep1[x]=dep1[fath]+1; if(dep1[x]>dep1[maxd1])maxd1=x; for(int i=0;i<v[x].size();i++){ int dot=v[x][i]; if(dot==fath)continue; dfs1(x,dot); } } int dfs2(int fath,int x){ dep2[x]=dep2[fath]+1; if(dep2[x]>dep2[maxd2])maxd2=x; for(int i=0;i<v[x].size();i++){ int dot=v[x][i]; if(dot==fath)continue; dfs2(x,dot); } } int f[N]; int tr(int fath,int x){ for(int i=0;i<v[x].size();i++){ int dot=v[x][i]; if(dot==fath)continue; tr(x,dot); f[x]=max(f[x],f[dot]+1); } } int dist,vot,k,cnt; bool p[N]; int main(){ //freopen("p.in","r",stdin); //freopen("p.out","w",stdout); cin>>n>>k; if(n==k){cout<<0;return 0;} for(int i=1;i<n;i++){ int a,b; cin>>a>>b; v[a].push_back(b); v[b].push_back(a); } dfs1(0,1); dfs2(0,maxd1); dist=dep2[maxd2]-1; for(int i=1;i<=n;i++){ int l=dep1[maxd1]-dep1[i]; if(dist/2==l){vot=i;break;} } tr(0,vot); re zl; for(int i=0;i<v[vot].size();i++){ int dot=v[vot][i]; zl.poi=dot;zl.val=f[dot]; s.push(zl); p[dot]=1; } cnt=0;p[vot]=1; while(cnt<k){ cnt++; zl=s.top(); s.pop(); int x=zl.poi; p[x]=1; for(int i=0;i<v[x].size();i++){ int dot=v[x][i]; if(p[dot])continue; zl.poi=dot;zl.val=f[dot]; s.push(zl); p[dot]=1; } } sort(f+1,f+1+n); cout<<f[n-k-1]+1; return 0; }
原文地址:https://www.cnblogs.com/lxzl/p/11515202.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
- Android开发中Intent.Action各种常见的作用汇总
- Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
- Android添加ButterKnife时报错Error:(2, 0) Cannot add extension with name 'android'的解决办法
- Python视频编辑库MoviePy的使用
- python json.dumps中文乱码问题解决
- Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式
- Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法
- Android中buildToolVersion与CompileSdkVersion的区别
- Glide用法与技巧以及优秀库的推荐
- Android整理好的图片压缩工具类
- Android Studio获取网络JSON数据并处理的方法
- Android使用ViewPager快速切换Fragment时卡顿的优化方案
- 在Android打包中区分测试和正式环境浅析
- django 多数据库及分库实现方式