hdu3452 无向树去掉最小的边集使任何叶子与根不连通 / 最小割
思路一下就上来了,叶子向汇点连边,inf保证不会成为割,跑根到汇点最小割即可。注意无向树双向建边。基础题,分分钟1A:
- #include<iostream>
- #include<queue>
- #include<cstdio>
- #include<cstring>
- #include<set>
- #include<vector>
- using namespace std;
- const int inf=0x3f3f3f3f;
- const int maxv=1005,maxe=10000;
- int nume=0;int head[maxv];int e[maxe][3];
- void inline adde(int i,int j,int c)
- {
- e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;
- e[nume++][2]=c;
- e[nume][0]=i;e[nume][1]=head[j];head[j]=nume;
- e[nume++][2]=0;
- }
- int ss,tt,n,m;
- int vis[maxv];int lev[maxv];
- bool bfs()
- {
- for(int i=0;i<maxv;i++)
- vis[i]=lev[i]=0;
- queue<int>q;
- q.push(ss);
- vis[ss]=1;
- while(!q.empty())
- {
- int cur=q.front();
- q.pop();
- for(int i=head[cur];i!=-1;i=e[i][1])
- {
- int v=e[i][0];
- if(!vis[v]&&e[i][2]>0)
- {
- lev[v]=lev[cur]+1;
- vis[v]=1;
- q.push(v);
- }
- }
- }
- return vis[tt];
- }
- int dfs(int u,int minf)
- {
- if(u==tt||minf==0)return minf;
- int sumf=0,f;
- for(int i=head[u];i!=-1&&minf;i=e[i][1])
- {
- int v=e[i][0];
- if(lev[v]==lev[u]+1&&e[i][2]>0)
- {
- f=dfs(v,minf<e[i][2]?minf:e[i][2]);
- e[i][2]-=f;e[i^1][2]+=f;
- sumf+=f;minf-=f;
- }
- }
- if(!sumf) lev[u]=-1;
- return sumf;
- }
- int dinic()
- {
- int sum=0;
- while(bfs())sum+=dfs(ss,inf);
- return sum;
- };
- int ind[maxv];
- void read_build()
- {
- int aa,bb,cc;
- for(int i=0;i<n-1;i++)
- {
- scanf("%d%d%d",&aa,&bb,&cc);
- adde(aa,bb,cc);
- adde(bb,aa,cc);
- ind[aa]++;ind[bb]++;
- }
- for(int i=1;i<=n;i++)
- if(i!=m&&ind[i]==1)
- {
- adde(i,tt,inf);
- }
- /* for(int i=0;i<=tt;i++)
- for(int j=head[i];j!=-1;j=e[j][1])
- {
- if(j%2==0)
- printf("%d->%d:%d\n",i,e[j][0],e[j][2]);
- }*/
- }
- void init()
- {
- nume=0;
- ss=m;tt=n+1;
- for(int i=0;i<=tt;i++)
- {
- head[i]=-1;ind[i]=0;
- }
- }
- int main()
- {
- while(~scanf("%d%d",&n,&m)&&(n||m))
- {
- init();
- read_build();
- int ans;
- ans=dinic();
- printf("%d\n",ans);
- }
- return 0;
- }
hdu3452 无向树去掉最小的边集使任何叶子与根不连通 / 最小割的更多相关文章
- hdu3452 无向树去掉最小的边集使不论什么叶子与根不连通 / 最小割
思路一下就上来了,叶子向汇点连边,inf保证不会成为割,跑根到汇点最小割就可以.注意无向树双向建边.基础题,分分钟1A: #include<iostream> #include<qu ...
- SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp
题意:求一颗无向树的最小点覆盖. 本来一看是最小点覆盖,直接一下敲了二分图求最小割,TLE. 树形DP,叫的这么玄乎,本来是线性DP是线上往前\后推,而树形DP就是在树上,由叶子结点状态向根状态推. ...
- 伪列:Oracle显示查询结果前几条记录用rownum<=。去掉重复记录,保留最早录入记录:取出最小ROWID
显示6-10行记录: 去掉重复记录,保留最早录入记录:取出最小ROWID SELECT deptno,dname,loc,min(ROWID) FROM dept GROUP BY deptno,dn ...
- LeetCode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements) 47
453. 最小移动次数使数组元素相等 453. Minimum Moves to Equal Array Elements 题目描述 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移 ...
- Java实现 LeetCode 453 最小移动次数使数组元素相等
453. 最小移动次数使数组元素相等 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 ...
- 求去掉一条边使最小割变小 HAOI2017 新型城市化
先求最小割,然后对残量网络跑Tarjan.对于所有满流的边,若其两端点不在同一个SCC中,则这条边是满足条件的. 证明见 来源:HAOI2017 新型城市化
- B. Connecting Universities DFS,无向树
http://codeforces.com/problemset/problem/700/B 题意是,在一颗树中,有k个大学,要求两两匹配,他们之间的距离作为贡献,使得距离总和最大. 一开始的时候无从 ...
- 【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)
http://wikioi.com/problem/1904/ 这题没看数据的话是一个大坑(我已报告官方修复了),答案只要求数量,不用打印路径...orz 最小路径覆盖=n-最大匹配,这个我在说二分图 ...
- HDU 3586.Information Disturbing 树形dp 叶子和根不联通的最小代价
Information Disturbing Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/ ...
随机推荐
- kafka及扩展的安装笔记
参考文件 https://blog.csdn.net/weiwenjuan0923/article/details/76152744 一.首先确认下jdk有没有安装 安装参照这个连接 https:// ...
- Python知识点入门笔记——特色数据类型(元组)
元组(tuple)是Python的另一种特色数据类型,元组和列表是相似的,可以存储不同类型的数据,但是元组是不可改变的,创建后就不能做任何修改操作. 创建元组 用逗号隔开的就是元组,但是为了美观和代码 ...
- 传送流(TS)的基础知识
数字电视的TS包和TS流的组成和功能 综合考虑几下几个因素: (1)包的长度不能过短,否则包头开销所占比例过大, 导致传输效率下降 (2)包的长度不能过长,否则在丢失同步的情况下恢复同步的 周期过长, ...
- secureCRT中vim行号下划线问题
在vim中发现开启显示行号(set number)或语法高亮(syntax on)时,发现文档中很多地方都有下划线,对视觉产生极大干扰.开始还以为是vim的某个配置造成的,后来发现真正的元凶是secu ...
- Hive UDAF开发详解
说明 这篇文章是来自Hadoop Hive UDAF Tutorial - Extending Hive with Aggregation Functions:的不严格翻译,因为翻译的文章示例写得比较 ...
- 2 Model层 - 模型查询
1.简介 查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 ...
- HttpRunnerManager 接口自动化测试平台 搭建实践
一.需要准备的知识点 1. linux: 安装 python3.nginx 安装和配置.mysql 安装和配置 2. python: django 配置.uwsgi 配置 二.我搭建的环境 1. Ce ...
- SXCPC2018 nucoj1999 占领城市
#include <iostream> #include <cstring> #include <cstdio> #include <queue> us ...
- Asp.net自定义控件开发任我行(1)-笑傲江湖
1.引言 参加工作5个月了,来到一家小公司,有几只老鸟带我,但不是我公司的,几个礼拜才来一次.来到公司做的第一个项目是web项目,里面有很多的重复代码,页面代码都是千篇一律,你这人也太水了吧,垃圾代码 ...
- leetcode 【 Linked List Cycle II 】 python 实现
公司和学校事情比较多,隔了好几天没刷题,今天继续刷起来. 题目: Given a linked list, return the node where the cycle begins. If the ...