[bzoj4519][Cqoi2016]不同的最小割_网络流_最小割_最小割树
不同的最小割 bzoj-4519 Cqoi-2016
题目大意:题目链接。
注释:略。
想法:
我们发现这和最小割那题比较像。
我们依然通过那个题说的办法一样,构建最小割树即可。
接下来就是随便怎么处理都行了。
我们可以弄一个数组把枚举到的距离都记录下来即可。
Code:
- #include <bits/stdc++.h>
- #define N 860
- #define M 17010
- using namespace std;
- queue<int> q;
- int n,head[N],to[M],val[M],next[M],tot=1,s,t,dis[N],a[N],tmp[N],ans[N][N],v[1000000],tot;
- inline void add(int x,int y,int z)
- {
- to[++tot]=y,val[tot]=z,next[tot]=head[x],head[x]=tot;
- to[++tot]=x,val[tot]=z,next[tot]=head[y],head[y]=tot;
- }
- bool bfs()
- {
- int x,i;
- memset(dis,0,sizeof(dis));
- while(!q.empty()) q.pop();
- dis[s]=1,q.push(s);
- while(!q.empty())
- {
- x=q.front(),q.pop();
- for(i=head[x];i;i=next[i])
- {
- if(val[i]&&!dis[to[i]])
- {
- dis[to[i]]=dis[x]+1;
- if(to[i]==t) return 1;
- q.push(to[i]);
- }
- }
- }
- return 0;
- }
- int dinic(int x,int low)
- {
- if(x==t) return low;
- int temp=low,i,k;
- for(i=head[x];i;i=next[i])
- {
- if(val[i]&&dis[to[i]]==dis[x]+1)
- {
- k=dinic(to[i],min(temp,val[i]));
- if(!k) dis[to[i]]=0;
- val[i]-=k,val[i^1]+=k;
- if(!(temp-=k)) break;
- }
- }
- return low-temp;
- }
- void solve(int l,int r)
- {
- if(l >= r) return;
- int i,j,sum=0,p1,p2;
- for(i=2;i <= tot;i+=2) val[i]=val[i^1]=(val[i]+val[i^1]) >> 1;
- s=a[l],t=a[r];
- while(bfs()) sum+=dinic(s,1<<30);
- for(i=1;i <= n;i++)
- if(dis[i])
- for(j=1;j <= n;j++)
- if(!dis[j])
- ans[i][j]=ans[j][i]=min(ans[i][j],sum);
- for(p1=i=l,p2=r;i <= r;i++)
- {
- if(dis[a[i]]) tmp[p1++]=a[i];
- else tmp[p2--]=a[i];
- }
- for(i=l;i <= r;i++) a[i]=tmp[i];
- solve(l,p2),solve(p1,r);
- }
- int main()
- {
- int m,i,j,x,y,z,ret=0;
- scanf("%d%d",&n,&m);
- while(m--) scanf("%d%d%d",&x,&y,&z),add(x,y,z);
- for(i=1;i <= n;i++) a[i]=i;
- memset(ans,0x7f,sizeof(ans)),solve(1,n);
- for(i=1;i <= n;i++)
- for(j=i+1;j <= n;j++)
- v[++tot]=ans[i][j];
- sort(v+1,v+tot+1);
- v[0]=-1<<30;
- for(i=1;i <= tot;i++)
- if(v[i] != v[i-1])
- ret++;
- printf("%d\n",ret);
- return 0;
- }
小结:最小割树的应用我就碰见了这么两道题。
[bzoj4519][Cqoi2016]不同的最小割_网络流_最小割_最小割树的更多相关文章
- ACM/ICPC 之 最小割转网络流(POJ3469)
重点:构图 //最小割转网络流 //邻接表+Dinic //Time:5797Ms Memory:6192K #include<iostream> #include<cstring& ...
- 【BZOJ2229】[ZJOI2011]最小割(网络流,最小割树)
[BZOJ2229][ZJOI2011]最小割(网络流,最小割树) 题面 BZOJ 洛谷 题解 戳这里 那么实现过程就是任选两点跑最小割更新答案,然后把点集划分为和\(S\)联通以及与\(T\)联通. ...
- UVA 10480 Sabotage (网络流,最大流,最小割)
UVA 10480 Sabotage (网络流,最大流,最小割) Description The regime of a small but wealthy dictatorship has been ...
- 【BZOJ1797】[AHOI2009]最小割(网络流)
[BZOJ1797][AHOI2009]最小割(网络流) 题面 BZOJ 洛谷 题解 最小割的判定问题,这里就当做记结论吧.(源自\(lun\)的课件) 我们先跑一遍最小割,求出残量网络.然后把所有还 ...
- 【bzoj2229】[Zjoi2011]最小割 分治+网络流最小割
题目描述 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分 ...
- 【Loj117】有源汇上下界最小流(网络流)
[Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...
- BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划
BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...
- POJ 3469(Dual Core CPU-最小割)[Template:网络流dinic V2]
Language: Default Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 19321 ...
- 【BZOJ-2502】清理雪道 有上下界的网络流(有下界的最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 594 Solved: 318[Submit][Status][Discuss] ...
随机推荐
- 死磕 java集合之终结篇
概览 我们先来看一看java中所有集合的类关系图. 这里面的类太多了,请放大看,如果放大还看不清,请再放大看,如果还是看不清,请放弃. 我们下面主要分成五个部分来逐个击破. List List中的元素 ...
- 支付宝-API接口解析-转账到银行
支付宝-API接口解析-转账到银行 扫码转账 测试地址 解析内容: alipays://platformapi/startapp?appId=09999988&actionType=toCar ...
- mac重启iterm后不会自动加载.bash_profile
我用的zsh,由于平时设置的环境变量都是在.bash_profile文件中,每次重启iterm后,都需要重启手动加载.bash_profile文件,很麻烦. 设置自动加载.bash_profile的方 ...
- oracle 安装,启动 ,plsql 连接
1.下载oracle 服务器端,正常安装,在选择桌面类或者是服务器类的时候选择服务器类. 2.下载oracle 客户端解压版 下载地址 链接:https://pan.baidu.com/s/1mi ...
- vscode显示php函数列表
1.安装插件支持 https://marketplace.visualstudio.com/items?itemName=linyang95.php-symbols 2.ctrt+shift+o 即可 ...
- Java之抽象和封装
① 如何从现实世界中抽象出类? 根据软件开发需求: 发现类-->发现类的属性-->发现类的方法 ② 构造方法的作用和特点是什么? 作用:在创建对象时执行一些初始化操作 ...
- SpringCloud 微服务框架
学习资源:https://ke.qq.com/course/280057 知识体系分为以下几点: 1)使用Eureka搭建注册中心,包括 服务生产者.服务消费者(也称服务注册与发现): Zookeep ...
- GridSearchCV 与 RandomizedSearchCV 调参
GridSearchCV GridSearchCV的名字其实可以拆分为两部分,GridSearch和CV,即网格搜索和交叉验证. 这两个概念都比较好理解,网格搜索,搜索的是参数,即在指定的参数范 ...
- 前端入门22-讲讲模块化 包括webstrom建立简单ES6
https://www.cnblogs.com/dasusu/p/10105433.html
- CAD参数绘制对齐标注(网页版)
主要用到函数说明: _DMxDrawX::DrawDimAligned 绘制一个对齐标注.详细说明如下: 参数 说明 DOUBLE dExtLine1PointX 第一条界线开始点X值 DOUBLE ...