
BZOJ3345: Pku2914 Minimum Cut
发布日期:2021-05-06 03:50:30
浏览次数:36
分类:原创文章
本文共 1751 字,大约阅读时间需要 5 分钟。
真的是日了DOG了 发现Mincut返回错东西了
关于最小割的话我们可以任取一个点作为S 然后枚举T进行最大流 O(n4)
时间复杂度显然是那么我们跑不过去
这了我们需要的是一个叫Stoer wagner的算法 时间复杂度为 O(n3)
算法的整体思想是不停的将图缩点并在缩点过程中更新答案
每次扩展一个当前联通度最大的节点并更新其他未扩展节点的联通度直到无节点可以继续扩展
这时候我们有一个扩展节点的顺序 将最后扩展的节点的联通度用来更新答案 取最后扩展的两个点缩点 (这里与倒数第二个节点缩点是为了让可更新更小)
每一次我们都回找到一个点 这个点代表了一个点集 而这个点的联通度就是这个点集 于这个点集的补集的割
具体实现看代码
#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>#include<queue>using namespace std;char c;inline void read(int &a){ a=0;do c=getchar();while(c<'0'||c>'9'); while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}int M[501][501];int n;struct Res{ int len,u,v; inline friend bool operator<(Res a,Res b){ return a.len<b.len;}};int size[501],f[501];int find(int x){ return f[x]==x?x:f[x]=find(f[x]);}void Union(int u,int v){ if(size[u]<size[v])swap(u,v);f[u]=f[v];if(size[u]==size[v])size[u]++;}int Du[501];bool use[501];int Mincut(){ int res=1<<29,tp; for(int i=1;i<n;i++) { for(int j=1;j<=n;j++)use[j]=false,f[j]=j,size[j]=1,Du[j]=0; Res R;tp=0; int u=1,v=1; for(int j=1;j<=n;j++) Du[j]+=M[u][j]; use[1]=true; for(int j=1;j+i<=n;j++) { u=v; v=0; for(int k=1;k<=n;k++) if(use[k]==false&&Du[k]>Du[v])v=k; use[v]=true; for(int k=1;k<=n;k++) Du[k]+=M[v][k]; } res=min(res,Du[v]); if(u>v)swap(u,v); for(int i=1;i<=n;i++) if(M[i][v]) M[u][i]=M[i][u]+=M[i][v],M[v][i]=M[i][v]=0; M[u][v]=0,M[u][u]=0; } return res;}int main(){ int m; read(n),read(m); for(int i=1;i<=m;i++) { int j,k;read(j),read(k),read(M[j][k]),M[k][j]=M[j][k]; } int ans=Mincut(); printf("%d\n",ans);}
发表评论
最新留言
很好
[***.229.124.182]2025年03月26日 12时02分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《ybtoj高效进阶》第二部分第二章例题5 子正方形
2019-03-04
P1381 单词背诵
2019-03-04
SSLOJ1230 战略游戏
2019-03-04
P5854 【模板】笛卡尔树
2019-03-04
SpringMVC的基础配置之注解驱动
2019-03-04
在Ubuntu上安装GCC编译器
2019-03-04
Maven(高级)之聚合
2019-03-04
快速构建SpringBoot工程
2019-03-04
SpringBoot配置之配置文件分类
2019-03-04
Vue中使用v-for不能用index作为key值
2019-03-04
position: fixed如何相对父元素定位
2019-03-04
SecureCRT注册机
2019-03-04
供应商解决了mini-LED的生产问题 新款MBP蓄势待发?
2019-03-04
new对象实际是在干嘛,懂了后String相关面试题随便推导
2019-03-04
Spring中@EnableCaching如何集成redis
2019-03-04
爱了!Alibaba技术官甩出的SpringCloud笔记,GitHub已标星81.6k
2019-03-04
菜鸟程序员,被无良HR欺骗,因祸得福,竟“意外”拿下美团offer
2019-03-04
已跪,Java全能笔记爆火,分布式/开源框架/微服务/性能调优全有
2019-03-04
吓我一跳?看了线程和线程池的对比,才知道池化技术到底有多牛
2019-03-04
给公司妹子讲了好久,头都大了,一个SQL语句是如何执行的?
2019-03-04