题目简化和分析:

明确一点这是一棵树。

为了保证每个工业城市的设置效益最大,应该设在最深的节点。

从深到浅,可以使用优先队列去实现。

设置一个的价值为 \(dep_u-siz_u-1\)。

关于作者一开始想反了,设置旅游城市,虽然可以做,但非常麻烦,于是看了别人大佬思路才明白。

错误原因在于,有可能儿子先设置了,而他的祖先却没有,会导致重复计算。

大家引以为戒。

Solution:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db; const int N=4e5+50;
const int M=1e5+50;
const int Mod=1e9+7; inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
} int n,k;
struct edge{
int to,next;
}e[N];
int head[N],cnt;
void add_edge(int u,int v){
++cnt;
e[cnt].to=v;
e[cnt].next=head[u];
head[u]=cnt;
}
priority_queue<int>q;
int siz[N],dep[N];
void dfs(int u,int p){
dep[u]=dep[p]+1;
for(int i=head[u];i;i=e[i].next){
int y=e[i].to;
if(y==p) continue;
dfs(y,u);
siz[u]+=siz[y];
}
q.push(dep[u]-siz[u]-1);
++siz[u];
}
int main()
{
n=read(),k=read();
for(int i=1;i<n;++i){
int u,v;
u=read(),v=read();
add_edge(u,v);
add_edge(v,u);
}
dfs(1,0);
ll ans=0;
while(k){
--k;
ans+=q.top();
q.pop();
}
printf("%lld\n",ans);
return 0;
}

随机推荐

  1. docker中的mysql中文乱码解决办法

    博主最近在做谷粒商城,因为要使用docker安装mysql,但是由于安装的时候没有指定mysql的数据库的utf8格式,导致插入的时候就出现了中文是问号的情况,到处百度终于解决,于是打算记录一下自己的 ...

  2. 通用权限系统-Spring-Boot-Starter

    Spring-Boot-Starter 自定义Starter 案例一:读取application.yml中的参数 1.创建 1.创建maven工程hello-spring-boot-starter 2 ...

  3. 使用selenium、xpath、半自动点赞、自动登录

    selenium等待元素加载 # 程序执行速度很快--->获取标签--->标签还没加载好--->直接去拿会报错 # 显示等待:当你要找一个标签的时候,给它单独加等待时间 # 隐士等待 ...

  4. 解决phpMyAdmin点击"结构"列页面失去响应的问题

    最后更新时间 2017-12-05. 我的环境: phpMyAdmin:4.0.4.1 PHP:5.6.11 第一步 关闭自动更新 打开 ./libraries 目录下的 vendor_config. ...

  5. ASP.NET WebForm中asp:Repeater和UI:Grid数据为空时如何显示表头?

    一.asp:Repeater Repeater 控件用于显示被绑定在该控件上的项目的重复列表.Repeater 控件可被绑定到数据库表.XML 文件或者其他项目列表. 1.1-前台页面代码 <a ...

  6. DC-SDK 开发文档

    https://resource.dvgis.cn/dc-docs/v2.x/zh/introduction/#%E5%BA%94%E7%94%A8%E9%85%8D%E7%BD%AE

  7. 其实webpack编译"模块化"的源码没那么难

    我们在 webpack初体验 这篇文章中演示到,浏览器不支持 CommonJS ,在特定场景下才支持 Es Module ,而 webpack 可以将这些模块化的代码解析成浏览器可识别的语法. 那么 ...

  8. nginx配置gzip压缩

    前言 为提高用户获取响应数据的速度,Nginx服务器可以将响应数据进行gzip压缩,在减小响应数据的大小后再发送给用户端浏览器. 要想启用gzip压缩,需要浏览器支持gzip压缩功能,目前大多数浏览器 ...

  9. Hybird 技术讨论:热更新原理解析

    原生应用 VS 混合应用 大家对于原生应用和混合应用已经非常熟悉了,这里就不再进行详细的介绍,用通俗易懂的话解释下他们的一些特点.   1.原生应用 在 Android.iOS 等移动平台上利用提供的 ...

  10. 2、搭建MyBatis

    2.1.开发环境 IDE:idea 2019.2 构建工具:maven 3.8.4 MySQL版本:MySQL 5.7 MyBatis版本:MyBatis 3.5.7 MySQL不同版本的注意事项 ( ...