bzoj1517: [POI2006]Met
来源:互联网 发布:做市商交易制度知乎 编辑:程序博客网 时间:2024/06/05 04:42
传送门
首先堆原图进行拓扑排序。
给出个结论:
对于每一层来说,对答案的贡献是min(2*l,num[dep])
num[dep]代表第dep层的节点个数。
求和即可。
方案显然是最优的。
可行性自己yy
#include<cmath>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#define N 1000005using namespace std;struct edge{int to,next;}e[N*2];int head[N],q[N],in[N],dep[N],sum[N];int n,l,x,y,h,t,tot,ans;void add(int x,int y){ e[++tot]=(edge){y,head[x]}; head[x]=tot; in[x]++; e[++tot]=(edge){x,head[y]}; head[y]=tot; in[y]++;}int main(){ scanf("%d%d",&n,&l); for (int i=1;i<n;i++){ scanf("%d%d",&x,&y); add(x,y); } for (int i=1;i<=n;i++) if (in[i]==1) q[++t]=i,dep[i]=1,sum[1]++; while (h!=t){ x=q[++h]; for (int i=head[x];i;i=e[i].next){ in[e[i].to]--; if (in[e[i].to]==1){ dep[e[i].to]=dep[x]+1; sum[dep[e[i].to]]++; q[++t]=e[i].to; } } } for (int i=1;sum[i];i++) ans+=min(sum[i],2*l); printf("%d",ans);}
阅读全文
0 0
- bzoj1517: [POI2006]Met
- BZOJ 1517 [POI2006]Met
- BZOJ 1517 [POI2006]Met 贪心
- Poi2006 Palindromes
- BZOJ1517 [Usaco2009 Open]滑雪课Ski
- Met with Lois
- POI 2006 Met-Subway
- 关于MET的解释
- 【数位统计】poi2006 kry
- Enterprise Python I Met
- Enterprise HTML5 I Met
- ,MET面试技术
- [BZOJ1516] [POI2006]Mag-Warehouse
- bzoj1524【POI2006】Pal
- BZOJ1520: [POI2006]Szk-Schools
- bzoj 1442: [Poi2006]Crystal
- bzoj1514: [POI2006]ZAB-Frogs
- 【bzoj1520】 [POI2006]Szk-Schools
- spring源码深度解析阅读
- (无)状态服务器
- oj 2725: 递归--求n个数的最大值
- Wiggle Subsequence
- 文章标题
- bzoj1517: [POI2006]Met
- Problem B: 模板是个好东西
- 基于Core Text实现的的txt,epub电子书阅读器
- [bzoj2818]GCD 欧拉函数线筛
- 一句话完成无限轮播器的编程
- 好用的免费的PPT下载网站
- Java实现对mongodb模糊查询
- C# 打印详解
- 工作也不止眼前的苟且,还有诗与远方