dinic 模板
来源:互联网 发布:js怎么给input赋值 编辑:程序博客网 时间:2024/05/16 09:24
int dinic_d[maxn];bool dinic_vis[maxn];struct edge{ int v,next,c;}e[maxe];int head[maxn],tol , s , t;void dinic_init(){ tol=0; memset(head,-1,sizeof head);}void AddEdge(int u,int v,int c){ e[tol].v=v,e[tol].c=c,e[tol].next=head[u],head[u]=tol++; e[tol].v=u,e[tol].c=0,e[tol].next=head[v],head[v]=tol++;}bool bfs(){ memset(dinic_d,0,sizeof dinic_d); memset(dinic_vis,0,sizeof dinic_vis); queue<int> q; q.push(s); dinic_vis[s]=1; while(!q.empty()){ int u=q.front(); q.pop(); for(int i=head[u];i!=-1;i=e[i].next){ int v=e[i].v; if(e[i].c&&!dinic_vis[v]){ dinic_vis[v]=1; dinic_d[v]=dinic_d[u]+1; q.push(v); } } } return dinic_vis[t];}int dfs(int x,int pf){ if(x==t) return pf; else{ int ret=0; for(int i=head[x];i!=-1&&pf;i=e[i].next){ int v=e[i].v; if(e[i].c&&dinic_d[v]==dinic_d[x]+1){ int d=dfs(v,min(e[i].c,pf)); e[i].c-=d; e[i^1].c+=d; pf-=d; ret+=d; } }if(!ret) dinic_d[x] = -2; return ret; }}int dinic(){ int ret=0; while(bfs()){ ret+=dfs(s,INF); } return ret;}////////////////////////////
0 0
- Dinic 模板
- dinic 模板
- Dinic模板
- Dinic模板
- Dinic模板
- Dinic模板
- dinic模板
- dinic 模板
- dinic 模板
- (模板) dinic
- 模板-Dinic
- 【Dinic模板】
- dinic 模板
- Dinic模板
- 模板:DINIC
- DINIC 模板
- 【模板】dinic
- dinic模板
- xcode模拟器调试无法显示调用栈的解决办法
- dbms_application_info.set_session_longops过程的使用和v$session_longops
- 解决android软键盘将其他view挤上去的问题
- Redis入门
- QML入门教程(3)
- dinic 模板
- 【web系列】纠正jQuery获取radio选中值的写法
- POJ 1961 Period
- 在“云基础设施即服务的魔力象限”报告中,AWS 连续三年被评为领导者
- 【Android UI设计与开发】:顶部标题栏(一)ActionBar详细概述和简单示例
- MySQL日期数据类型、时间类型使用总结
- 东软学习,教师课件,oracle编程
- An easy problem(2055)
- 【PLSQL Developer】PLSQL Developer SQL Editor 乱码问题