博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1966 Cable TV Network
阅读量:7191 次
发布时间:2019-06-29

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

枚举源汇最小割

#include
#include
#include
#include
using namespace std;const int N=102;const int M=2002;const int inf=0x3f3f3f3f;struct edge{ int to,next,w;}e[M];int head[N],ecnt=1,cur[N];int S,T,n,m;int st[M],ed[M];int dep[N],q[N],qr;inline void add(int u,int v,int w){ e[++ecnt].to=v;e[ecnt].next=head[u];head[u]=ecnt;e[ecnt].w=w; e[++ecnt].to=u;e[ecnt].next=head[v];head[v]=ecnt;e[ecnt].w=0;}bool bfs(){ for(int i=1;i<=T;i++) dep[i]=-1,cur[i]=head[i]; q[qr=1]=S;dep[S]=0; for(int ql=1;ql<=qr;ql++) { int u=q[ql]; for(int i=head[u],v;i;i=e[i].next) { if(e[i].w && dep[v=e[i].to]==-1) { dep[v]=dep[u]+1; q[++qr]=v; if(v==T) return 1; } } } return 0;}int dinic(int u,int flow){ if(u==T) return flow; int ret=0,delta,v; for(int &i=cur[u];i;i=e[i].next) { if(e[i].w && dep[v=e[i].to]==dep[u]+1) { delta=dinic(v,min(e[i].w,flow-ret)); if(delta) { e[i].w-=delta; e[i^1].w+=delta; ret+=delta; if(flow==ret) break; } } } if(flow!=ret) dep[u]=-1; return ret;}void build_graph(int x,int y){ ecnt=1; memset(head,0,sizeof(head)); add(S,x,inf);add(y+n,T,inf); for(int i=1;i<=n;i++) { if(i!=x &&i!=y) add(i,i+n,1); else add(i,i+n,inf); } for(int i=1;i<=m;i++) add(st[i]+n,ed[i],inf),add(ed[i]+n,st[i],inf);}int read(){ int ret=0,op=1,c=getchar(); while(c<'0' || c>'9') { if(c=='-') op=-1; c=getchar(); } while(c>='0' && c<='9') { ret=ret*10+c-'0'; c=getchar(); } return ret*op;}int main(){ while(~scanf("%d%d",&n,&m)) { S=2*n+1;T=S+1; for(int i=1;i<=m;i++) { st[i]=read(); ed[i]=read(); ++st[i],++ed[i]; //printf("%d->%d\n",st[i],ed[i]); } int ans=n; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++) { build_graph(i,j); int maxflow=0; while(bfs()) maxflow+=dinic(S,inf); ans=min(ans,maxflow); } printf("%d\n",ans); } return 0;}

 

转载于:https://www.cnblogs.com/pigba/p/9046573.html

你可能感兴趣的文章
python GUI初步
查看>>
openstack4j接口调试
查看>>
内核分析阅读笔记
查看>>
安卓手机当Transmission下载机、FTP、要点总结
查看>>
移动端无缝滚动兼拖动插件
查看>>
PyQt5学习笔记-从主窗体打开一个子窗体
查看>>
English 好的报纸
查看>>
CMS 01
查看>>
NSValue&NSNumber
查看>>
Bootstrap 常用组件汇总
查看>>
python 系统设置
查看>>
北京汽车官网经销商信息抓取(解析html标签)
查看>>
mysql学习之路五(转)
查看>>
Beyond Compare比较表格小技巧
查看>>
第2章 理解面向对象
查看>>
数组的声明和遍历
查看>>
Mouse Key Hook
查看>>
Scrapy框架基础使用
查看>>
python学习笔记-(一)初识python
查看>>
前端的事件流以及事件处理程序
查看>>