在肖明

#神#
的推荐下,我尝试了这个题,一开始想的是暴力枚举所有的点,然后bfs层数,试着和肖明

#神#
说了这种方法之后,

#神#
轻蔑的一笑,说这不就是一个贪心么,你只需要先建树,然后从底下向上遍历,够了B个点就算作一个省。

#神#
的话让我豁然开朗,这个题貌似真的不是那么难诶。

然后
#神#
回去写作业了,蒟蒻我还在机房里思考

#神#
的话。仔细想了一下,发现这么贪心正确性显然。像

#神#
说的遍历树,然后当整棵树基本上快遍历完的时候,会出现剩下几个点不够B个的情况,然后就直接把他们连到根上,可以知道,因为我们之前是每个省都是B个城市,所以就算加到根上,根的那个省的城市还是会小于3\*B,所以这么就可以得出最优解。

然而书上的代码蒟蒻实现难度太高,,所以又借助了一下题解的力量。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define re register
#define maxn 1000007
#define ll long long
using namespace std;
struct po
{
int to,from,nxt;
};
po edge[];
int head[],n,m,B,b[],ans,t,rt[],fa,cnt,srk[],num,s;
inline void add_edge(int from,int to)
{
edge[++num].nxt=head[from];
edge[num].to=to;
head[from]=num;
}
inline void dfs(int u,int f)
{
int q=fa;
for(re int i=head[u];i;i=edge[i].nxt)
{
if(edge[i].to==f)
continue;
dfs(edge[i].to,u);
if(fa-q>=B)
{
cnt++;
rt[cnt]=u;
while(fa>q)
{
b[srk[fa--]]=cnt;
}
}
}
srk[++fa]=u;
}
int main()
{
cin>>n>>B;
for(re int i=;i<=n-;i++)
{
cin>>s>>t;
add_edge(s,t);
add_edge(t,s);
}
dfs(,);
while(fa)
{
b[srk[fa--]]=cnt;
}
cout<<cnt<<endl;
for(re int i=;i<=n;i++)
cout<<b[i]<<" ";
cout<<endl;
for(re int i=;i<=cnt;i++)
{
cout<<rt[i]<<" ";
}
return ;
}

最新文章

  1. 详解Node解析URL网址
  2. EF是啥?【What is Entity Framework?】(EF基础系列2)
  3. 【系统架构】IT职业技能图谱(点开大图查看)
  4. OpenSSL - RSA非对称加密实现
  5. 将cantk runtime嵌入到现有的APP中
  6. Hibernate之继承映射
  7. Fidder的几点补充
  8. Android运行异常情况分析(持续更新)
  9. MySQL数学函数
  10. C# Struct结构体
  11. jchat:linux聊天程序1:简介
  12. jsp日期插件My97DatePicker 强大的日期控件 使用方便简单
  13. python无线网络安全入门案例
  14. Cox回归模型【生存分析】
  15. TP框架自带的正则验证的规则
  16. win10的系统下怎么设置网页的字体变大
  17. PDF加密无法做笔记
  18. Oracle 执行计划(二)------表访问的几种方式
  19. 移除K位数字
  20. POI导入和导出Excel总结

热门文章

  1. SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的 STATEMENT“OpenRowset/OpenDatasource”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用“Ad Hoc Distributed Queries”。有关启用“Ad Hoc Distributed Queries”
  2. ios 蓝牙相关
  3. 服务器http请求https服务时报错解决方案
  4. SVN中分支的建立与合并
  5. MySQL如何优化GROUP BY :松散索引扫描 VS 紧凑索引扫描
  6. json &amp; pickle &amp; shelve 模块
  7. app开发公司排名哪家强?看App Annie给出的答案
  8. STL之空间配置器
  9. Java替换字符串中的占位符
  10. Kafka简介、安装