博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络流板子(Dicnic)
阅读量:5138 次
发布时间:2019-06-13

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

HDU-1532

#include
#define FIN freopen("input.txt","r",stdin)#define ll long long#define mod 1000000007#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define inf 2e9const int maxn = 405;using namespace std;int cnt,n,m;int head[maxn],Next[maxn*200],to[maxn*200];int flow[maxn*200],dep[maxn],cur[maxn];inline void add(int u,int v,int w){ Next[cnt]=head[u]; head[u]=cnt; to[cnt]=v; flow[cnt++]=w;}int dfs(int u,int cost){ if(u==m) return cost; for(int i=head[u];i!=-1;i=Next[i]){ if(dep[to[i]]==dep[u]+1&&flow[i]>0){ int dis=dfs(to[i],min(flow[i],cost)); if(dis>0){ flow[i]-=dis; flow[i^1]+=dis; return dis; } } } return 0;}int bfs(){ queue
q; q.push(1); memset(dep,0,sizeof(dep)); dep[1]=1; while(!q.empty()){ int u=q.front(); q.pop(); for(int i=head[u];i!=-1;i=Next[i]){ if(flow[i]>0&&dep[to[i]]==0){ dep[to[i]]=dep[u]+1; q.push(to[i]); } } } if(dep[m]>0) return 1; return 0;}int dicnic(){ int ans=0; while(bfs()){ int cost; for(int i=1;i<=m+2;i++){ cur[i]=head[i]; } while(cost=dfs(1,inf)) ans+=cost; } return ans;}void init(){ memset(head,-1,sizeof(head)); cnt;}int main(){ #ifndef ONLINE_JUDGE FIN; #endif while(~scanf("%d %d",&n,&m)){ init(); for(int i=1;i<=n;i++){ int u,v,w; scanf("%d %d %d",&u,&v,&w); add(u,v,w); add(v,u,0); } printf("%d\n",dicnic()); } }
View Code

 

转载于:https://www.cnblogs.com/MengX/p/10574838.html

你可能感兴趣的文章
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
SQL语法(3)
查看>>
在js在添版本号
查看>>
sublime3
查看>>
Exception Type: IntegrityError 数据完整性错误
查看>>
Nuget:Newtonsoft.Json
查看>>
【luogu4185】 [USACO18JAN]MooTube [并查集]
查看>>
手机号脱敏处理
查看>>
CI控制器调用内部方法并载入相应模板的做法
查看>>
Hdu - 1002 - A + B Problem II
查看>>
HDU - 2609 - How many
查看>>
每天CookBook之Python-003
查看>>
每天CookBook之Python-004
查看>>
Android设置Gmail邮箱
查看>>
StringBuffer的用法
查看>>
js编写时间选择框
查看>>
PHP压缩文件操作
查看>>
Java数据结构和算法(四)--链表
查看>>
JIRA
查看>>
ssl介绍以及双向认证和单向认证原理
查看>>