HDOJ 3586 Information Disturbing
来源:互联网 发布:鲍里斯三世知乎 编辑:程序博客网 时间:2024/06/06 20:24
给一颗树,1为根节点,要切断1与所有叶子的联系,每条边有权值,给定权值总和上限,求在给定总和上限内切断单条边权值中最大值的最小值。
二分上限即可。存储边长的数组在空间有限制时可以在树节点中存储。
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int n,m,idx;int sum[1005],mx[1005],c[1005][1005];//可以换到下面struct Node{//int len;存储两节点间边长; int v; Node *next;}*head[2010],tree[2010];void init(){ idx=1; for(int i=0;i<=n;i++) { tree[i].v=i; tree[i].next=NULL; head[i]=NULL; for(int j=0;j<=n;j++) { c[i][j]=0; } }}void add(int x,int y){ tree[idx].v=y; tree[idx].next=head[x]; head[x]=&tree[idx++]; tree[idx].v=x; tree[idx].next=head[y]; head[y]=&tree[idx++];}void Find(int rt,int par,int ul){ Node *p=head[rt]; while(p!=NULL) { if(p->v!=par) { if(mx[rt]==0)mx[rt]=c[rt][p->v]; else mx[rt]=max(mx[rt],c[rt][p->v]); Find(p->v,rt,ul); if(c[rt][p->v]<=ul) { if(mx[p->v]<=ul&&sum[p->v]!=0) { sum[rt]+=min(sum[p->v],c[rt][p->v]); } else sum[rt]+=c[rt][p->v]; } else { if(mx[p->v]<=ul&&sum[p->v]!=0) { sum[rt]+=sum[p->v]; } else sum[rt]=1000000; } if(sum[rt]>=1000000)sum[rt]=1000000; } p=p->next; }}int main(){ while(scanf("%d%d",&n,&m),n||m) { init(); int x,y,w; for(int i=1;i<n;i++) { scanf("%d%d%d",&x,&y,&w); c[x][y]=w; c[y][x]=w; add(x,y); } int l=0,r=n,mid,ans=-1; while(l<=r) { memset(sum,0,sizeof(sum)); memset(mx,0,sizeof(mx)); mid=(l+r)>>1; Find(1,0,mid); if(sum[1]<=m&&sum[1]!=0) { r=mid-1; ans=mid; } else l=mid+1; } printf("%d\n",ans); } return 0;}
- HDOJ 3586 Information Disturbing
- hdoj 3586 Information Disturbing(二分答案+树dp判断)
- HDU 3586 Information Disturbing
- HDU 3586 Information Disturbing
- HDU 3586 Information Disturbing
- hdu 3586 Information Disturbing
- HDU-3586-Information Disturbing
- hdu 3586 Information Disturbing 二分+树状DP
- HDU 3586 Information Disturbing 树状DP+二分
- HDU 3586 Information Disturbing 树形DP
- (简单) 树形dp HDU 3586 Information Disturbing
- hdu 3586 Information Disturbing 树形dp+二分
- HDU 3586 Information Disturbing(树形DP)
- hdu 3586 Information Disturbing(树形dp)
- HDU 3586 Information Disturbing 二分+树形DP
- HDU 3586 Information Disturbing (树形DP+二分)
- hdu 3586 Information Disturbing 删边类树形DP
- HDU 3586 Information Disturbing(树形DP)
- www.baidu.com
- 求二叉树的高度(非递归) .----美团二面=----硬伤 当时没有答上来
- jQuery Ajax请求-jQuery.post(url, [data], [callback], [type])
- c语言排序算法 动画效果展示
- windows 下的hadoop的安装
- HDOJ 3586 Information Disturbing
- NOI2005维护数列 伸展树splay
- $(document).ready()方法和window.onload()方法
- Kali Linux Tools List
- C# DataTable,DataSet,IList,IEnumerable 互转扩展属性
- HPCC(High Performance Computing Challenge)的输出
- 在控制台(Console)环境下编译Windows GUI程序
- [Google] 给一个无限的数据流,问某个时刻的中位数 。1) 数据流是整数 2)数据流不是整数
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音