【BZOJ4519】[Cqoi2016]不同的最小割 最小割树
【BZOJ4519】[Cqoi2016]不同的最小割
Description
Input
Output
输出文件第一行为一个整数,表示个数。
Sample Input
1 2 3
1 3 6
2 4 5
3 4 4
Sample Output
题解:同BZOJ2229
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <queue>
- #include <algorithm>
- using namespace std;
- int n,m,cnt,S,T,ans;
- int to[20000],next[20000],val[20000],head[1000],d[1000];
- int map[1000][1000],p[1000],pp[1000],s[1000000];
- queue<int> q;
- void add(int a,int b,int c)
- {
- to[cnt]=b,val[cnt]=c,next[cnt]=head[a],head[a]=cnt++;
- to[cnt]=a,val[cnt]=c,next[cnt]=head[b],head[b]=cnt++;
- }
- int dfs(int x,int mf)
- {
- if(x==T) return mf;
- int k,temp=mf,i;
- for(i=head[x];i!=-1;i=next[i])
- {
- if(d[to[i]]==d[x]+1&&val[i])
- {
- k=dfs(to[i],min(temp,val[i]));
- if(!k) d[to[i]]=0;
- val[i]-=k,val[i^1]+=k,temp-=k;
- if(!temp) break;
- }
- }
- return mf-temp;
- }
- int bfs()
- {
- while(!q.empty()) q.pop();
- memset(d,0,sizeof(d));
- d[S]=1,q.push(S);
- int i,u;
- while(!q.empty())
- {
- u=q.front(),q.pop();
- for(i=head[u];i!=-1;i=next[i])
- {
- if(!d[to[i]]&&val[i])
- {
- d[to[i]]=d[u]+1;
- if(to[i]==T) return 1;
- q.push(to[i]);
- }
- }
- }
- return 0;
- }
- void solve(int l,int r)
- {
- if(l==r) return ;
- S=p[l],T=p[r];
- int i,j,h1=l,h2=r,mf=0;
- for(i=0;i<cnt;i+=2) val[i]=val[i^1]=val[i]+val[i^1]>>1;
- while(bfs()) mf+=dfs(S,1<<30);
- for(i=1;i<=n;i++) if(d[i])
- for(j=1;j<=n;j++) if(!d[j])
- map[i][j]=map[j][i]=min(map[i][j],mf);
- for(i=l;i<=r;i++)
- {
- if(d[p[i]]) pp[h1++]=p[i];
- else pp[h2--]=p[i];
- }
- for(i=l;i<=r;i++) p[i]=pp[i];
- solve(l,h2),solve(h1,r);
- }
- int rd()
- {
- int ret=0,f=1; char gc=getchar();
- while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
- while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
- return ret*f;
- }
- int main()
- {
- n=rd(),m=rd();
- int i,j,a,b,c,pre;
- memset(head,-1,sizeof(head));
- memset(map,0x3f,sizeof(map));
- for(i=1;i<=m;i++) a=rd(),b=rd(),c=rd(),add(a,b,c);
- for(i=1;i<=n;i++) p[i]=i;
- solve(1,n);
- for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) s[++s[0]]=map[i][j];
- sort(s+1,s+s[0]+1);
- for(pre=-1,i=1;i<=s[0];i++) if(s[i]>pre) pre=s[i],ans++;
- printf("%d",ans);
- return 0;
- }
【BZOJ4519】[Cqoi2016]不同的最小割 最小割树的更多相关文章
- [bzoj4519][Cqoi2016]不同的最小割_网络流_最小割_最小割树
不同的最小割 bzoj-4519 Cqoi-2016 题目大意:题目链接. 注释:略. 想法: 我们发现这和最小割那题比较像. 我们依然通过那个题说的办法一样,构建最小割树即可. 接下来就是随便怎么处 ...
- scu - 3254 - Rain and Fgj(最小点权割)
题意:N个点.M条边(2 <= N <= 1000 , 0 <= M <= 10^5),每一个点有个权值W(0 <= W <= 10^5),现要去除一些点(不能去掉 ...
- 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流
最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...
- 3532: [Sdoi2014]Lis 最小字典序最小割
3532: [Sdoi2014]Lis Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 865 Solved: 311[Submit][Status] ...
- bzoj2229: [Zjoi2011]最小割(分治最小割+最小割树思想)
2229: [Zjoi2011]最小割 题目:传送门 题解: 一道非常好的题目啊!!! 蒟蒻的想法:暴力枚举点对跑最小割记录...绝对爆炸啊.... 开始怀疑是不是题目骗人...难道根本不用网络流?? ...
- HDU 1394 Minimum Inversion Number(最小逆序数 线段树)
Minimum Inversion Number [题目链接]Minimum Inversion Number [题目类型]最小逆序数 线段树 &题意: 求一个数列经过n次变换得到的数列其中的 ...
- POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心)-动态规划做法
POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John ...
- 紫书 例题 11-2 UVa 1395(最大边减最小边最小的生成树)
思路:枚举所有可能的情况. 枚举最小边, 然后不断加边, 直到联通后, 这个时候有一个生成树.这个时候,在目前这个最小边的情况可以不往后枚举了, 可以直接更新答案后break. 因为题目求最大边减最小 ...
- BZOJ4519 CQOI2016不同的最小割(最小割+分治)
最小割树:新建一个图,包含原图的所有点,初始没有边.任取两点跑最小割,给两点连上权值为最小割的边,之后对于两个割集分别做同样的操作.最后会形成一棵树,树上两点间路径的最小值即为两点最小割.证明一点都不 ...
随机推荐
- strcpy_s 函数的用法
strcpy_s和strcpy()函数的功能几乎是一样的. strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串.在程序运行时,这将导 ...
- 四、Ubuntu 一些常用命令
1.锁定root用户 :sudo passwd -l root 2.解锁root用户 :sudo passwd -u root 3.切换身份:su root 或者 su 其他用户名,然后输入密码, ...
- Codeforces Gym101063 C.Sleep Buddies (2016 USP-ICMC)
C.Sleep Buddies It is nighttime in the Earth Colony on Mars and everyone is getting ready to sleep. ...
- 在typescript中import第三方类库clipboard报错
一.问题 在实际开发项目中就遇到了这样的问题,需要在Vue+Typescript项目中添加复制文本的功能,就找了clipboard插件,先是新建了一个新的项目用来实验看看是否好用,都写好了以后发给别人 ...
- Java死锁及解决
Java线程死锁如何避免这一悲剧 Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键.不幸的是,使用上锁会带来其他问题.让我们来看一些常见问题以及相应的解决方法: Jav ...
- CodeForces - 16E Fish
Discription n fish, numbered from 1 to n, live in a lake. Every day right one pair of fish meet, and ...
- spring配置文件中配置sessionFactory失败
配置失败主要原因有两个: <bean id="studentDaoImp" class="com.gxwuz.maven.dao.StudentDaoImp&quo ...
- jquery_final
第一章 jquery入门 1,jquery的引入 <script type="text/javascript" src="js/jquery-3.3.1.min.j ...
- js判断是否是PC,IOS,Android客户端
写在前面 在项目中使用html5,需要针对不同的客户端浏览器有不一样的处理方式,这就需要对请求中的useragent进行分析,并进行处理. 一个例子 <%@ Page Language=&quo ...
- 【jsp】jsp访问到之后报错如下:Uncaught SyntaxError: Unexpected token <
jsp访问到之后报错如下: Uncaught SyntaxError: Unexpected token < 问题出在哪里: 发现把这个注销掉,就不会出现这个问题了,那script引用js文件哪 ...