题目的意思是给你一个棵树,每天边上有一个权值,现在要想根节点和每个叶子节点完全隔离开来,删除一些边,求最少需要删除的边权值综合是多少?

直接建模,以根节点为汇点,每个叶子节点连接虚拟源点流量无穷,树上的节点按原样建模就可以了。

最后跑一遍最大流等于最小割,完美解决。

召唤代码君:

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 20010
#define inf 1999999999
using namespace std; int first[maxn],to[maxn],c[maxn],next[maxn],N;
int d[maxn],a[maxn],can[maxn],tag[maxn],TAG=520;
int s,t,n,m,ans;
int Q[maxn],bot,top; void _init()
{
N=-1,ans=0,s=0,t=m;
for (int i=0; i<=n; i++) first[i]=-1,a[i]=0;
} void edge(int U,int V,int W)
{
N++;
to[N]=V,c[N]=W,next[N]=first[U],first[U]=N;
} void _input()
{
int U,V,W;
for (int i=1; i<n; i++)
{
scanf("%d%d%d",&U,&V,&W);
edge(U,V,W),edge(V,U,W);
a[U]++,a[V]++;
}
for (int i=1; i<=n; i++)
if (a[i]==1 && i!=t) edge(s,i,inf),edge(i,s,0);
} bool bfs()
{
TAG++;
Q[bot=top=1]=t,d[t]=1,tag[t]=TAG;
while (bot<=top)
{
int cur=Q[bot++];
for (int i=first[cur]; i!=-1; i=next[i])
{
if (c[i^1]<=0 || tag[to[i]]==TAG) continue;
d[to[i]]=d[cur]+1,Q[++top]=to[i],tag[to[i]]=TAG;
//if (to[i]==s) return true;
}
}
return tag[s]==TAG;
return false;
} int dfs(int cur,int num)
{
if (cur==t) return num;
int tmp=num,k;
for (int i=first[cur]; i!=-1; i=next[i])
{
if (c[i]<=0 || tag[to[i]]!=TAG || d[to[i]]!=d[cur]-1 || can[to[i]]==TAG) continue;
k=dfs(to[i],min(num,c[i]));
if (k) c[i]-=k,c[i^1]+=k,num-=k;
if (num==0) break;
}
if (num) can[cur]=TAG;
return tmp-num;
} int main()
{
while (scanf("%d%d",&n,&m)&&(n|m))
{
_init();
_input();
while (bfs()) ans+=dfs(s,inf);
printf("%d\n",ans);
}
return 0;
}

  

HDU3452_Bonsai的更多相关文章

随机推荐

  1. android 图片二维码识别和保存(二)

    续上一篇,开发图片二维码识别功能后,我们对功能进行性能分析内存占用显著提高了,不使用该功能内存占用大约是147M,使用这个功能多次以后,高达203M. 因此对功能进行研究,发现每次生成的图片没有即时的 ...

  2. OpenGL学习笔记(6) 基础光照的计算方法

    这个笔记只是冯氏光照模型下漫反射光以及镜面光照的计算方式的笔记 基础光照 基础光照分为环境光,漫反射光,镜面光照 环境光 环境光是一个常量,表示在没有光源的情况下物体的光 漫反射光 漫反射光分量的计算 ...

  3. [算法总结] 20 道题搞定 BAT 面试——二叉树

    本文首发于我的个人博客:尾尾部落 0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h-1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边.想到点什么没?实际上 ...

  4. Gdiplus的使用

    使用步骤: 1.包括相应的头文件及引入相应的lib #include <GdiPlus.h> #pragma comment(lib, "gdiplus.lib") u ...

  5. uptime命令详解

    基础命令学习目录首页 users个数和窗口数一致 原文链接:https://www.cnblogs.com/ultranms/p/9253217.html uptime 另外还有一个参数 -V(大写) ...

  6. 第十一次ScrumMeeting博客

    第十一次ScrumMeeting博客 本次会议于11月29日(三)22时整在3公寓725房间召开,持续30分钟. 与会人员:刘畅.辛德泰张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容和 ...

  7. 使用git-premit时的问题

    package.json 相关配置如下 { "scripts": { "lint": "eslint pages/* component/* --fi ...

  8. Django_rest_framework_渲染器/解析器/路由控制/分页

    目录 渲染器 解析器 路由控制 分页 渲染器 简介 什么是渲染器 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 渲染器的作用 序列化.友好的展示数据 渲染器配置 首先要在set ...

  9. centos下部署禅道流程

    原文摘录:https://www.jianshu.com/p/71e9dab130a5 下面将我在Linux系统下搭建禅道服务的过程分享给大家. 第一步:下载禅道 Linux中可以用以下命令来下载安装 ...

  10. java实验二实验报告

    一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 二.实验过程(本次试验都 ...