博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3987(求割边最小的最小割)
阅读量:7062 次
发布时间:2019-06-28

本文共 1901 字,大约阅读时间需要 6 分钟。

题目链接:

思路:我们知道最小割是不唯一的,这里要我们求割边最少的最小割,比较好做法有:

第一种:

    建边的时候每条边权 w = w * (E + 1) + 1;
    这样得到最大流 maxflow / (E + 1) ,最少割边数 maxflow % (E + 1)

  道理很简单,如果原先两类割边都是最小割,那么求出的最大流相等

    但边权变换后只有边数小的才是最小割了

 

    乘(E+1)是为了保证边数叠加后依然是余数,不至于影响求最小割的结果

  第二种:

    建图,得到最大流后,图中边若满流,说明该边是最小割上的边

  再建图,原则:满流的边改为容量为 1 的边,未满流的边改为容量 INF 的边,然后最大流即答案

View Code
1 #include
2 #include
3 #include
4 using namespace std; 5 typedef long long ll; 6 #define MAXN 2222 7 #define MAXM 2222222 8 9 10 struct Edge{11 int v,next;12 ll cap;13 }edge[MAXM];14 15 int head[MAXN];16 int pre[MAXN];17 int cur[MAXN];18 int level[MAXN];19 int gap[MAXN];20 int NV,NE,n,m,vs,vt;21 22 void Insert(int u,int v,ll cap,ll cc=0){23 edge[NE].v=v;edge[NE].cap=cap;24 edge[NE].next=head[u];head[u]=NE++;25 26 edge[NE].v=u;edge[NE].cap=cc;27 edge[NE].next=head[v];head[v]=NE++;28 }29 30 ll SAP(int vs,int vt){31 memset(pre,-1,sizeof(pre));32 memset(level,0,sizeof(level));33 memset(gap,0,sizeof(gap));34 for(int i=0;i<=NV;i++)cur[i]=head[i];35 int u=pre[vs]=vs;36 ll aug=-1,maxflow=0;37 gap[0]=NV;38 while(level[vs]
level[v]){61 cur[u]=i;62 minlevel=level[v];63 }64 }65 if(--gap[level[u]]==0)break;66 level[u]=minlevel+1;67 gap[level[u]]++;68 u=pre[u];69 }70 return maxflow;71 }72 73 int main(){74 int _case,u,v,w,flag,t=1;75 scanf("%d",&_case);76 while(_case--){77 scanf("%d%d",&n,&m);78 vs=0,vt=n-1,NV=n,NE=0;79 memset(head,-1,sizeof(head));80 for(int i=1;i<=m;i++){81 scanf("%d%d%d%d",&u,&v,&w,&flag);82 Insert(u,v,(ll)w*MAXM+1);83 if(flag)Insert(v,u,(ll)w*MAXM+1);84 }85 ll ans=SAP(vs,vt);86 printf("Case %d: %d\n",t++,ans%MAXM);87 }88 return 0;89 }

 

转载地址:http://jknll.baihongyu.com/

你可能感兴趣的文章
GitHub 上开源的区块链项目 90% 死亡了
查看>>
澳网张帅首夺大满贯 女双携斯托瑟挑落卫冕冠军
查看>>
“平潭-高雄”货运直航开通 三大优势凸显
查看>>
“共度欢乐春节”摄影图片展在阿斯塔纳开幕
查看>>
新光大ArtPark9亮相 以“艺术”再造生活方式
查看>>
关于Python数据分析,这里有一条高效的学习路径
查看>>
三亚:严查“先登记支付房款、后补交社保或个税”行为
查看>>
神级程序猿用HTML5代码画出恐龙求欢图,想象力太丰富!
查看>>
谋势、聚力、强生态,用友三十而立
查看>>
python爬虫——40行代码爬取「笔趣看」全部小说
查看>>
数据分析师完整的知识结构
查看>>
Airbnb个性化搜索服务架构
查看>>
【译】Cloudera Manager(CDH)入门系列之四 (管理员控制台)
查看>>
编程常用动词细微差别
查看>>
如何通过Dataworks禁止MaxCompute 子账号跨Project访问
查看>>
聊聊reactive streams的backpressure
查看>>
android studio 2 3 的maven坑
查看>>
来分享一个我自己写的HTML模板引擎,Leopard
查看>>
基于阿里云数加构建企业级数据分析平台
查看>>
React Native安卓模拟器调出Dev Setting菜单
查看>>