zoukankan      html  css  js  c++  java
  • hdu1532网络流

    (双倍经验题)

    第二次写dinic模板,居然一遍写对了,而且短了不少O(∩_∩)O~

     1 #include <cstdio>
     2 #define INF 2147483647
     3 int n,m,ans,x,y,z,M,h,t;long long zl;
     4 int d[201],l[300],fir[201],nex[500],to[500],wei[500];
     5 inline int min(int a,int b){if(a<b) return a;else return b;}
     6 inline void add(int x,int y,int z){to[++M]=y;wei[M]=z;nex[M]=fir[x];fir[x]=M;}
     7 long long dfs(int now,long long flow,long long sum)
     8 {
     9     if(now==n)    return flow;
    10     for(int i=fir[now];i && flow;i=nex[i])
    11     if(d[to[i]]==d[now]+1 && wei[i])
    12         zl=dfs(to[i],min(flow,wei[i]),0),sum+=zl,flow-=zl,wei[i]-=zl,wei[i^1]+=zl;
    13     if(sum==0)d[now]=0;return sum;
    14 }
    15 bool bfs()
    16 {
    17     for(int i=1;i<=n;i++) d[i]=0;
    18     for(h=1,t=1,l[1]=1,d[1]=1;h<=t;h++)
    19         for(int i=fir[l[h]];i;i=nex[i])
    20         if(!d[to[i]] && wei[i])
    21             l[++t]=to[i],d[l[t]]=d[l[h]]+1;
    22     return d[n];
    23 }
    24 int main()
    25 {
    26     while(~scanf("%d%d",&m,&n))
    27     {
    28         for(int i=1;i<=n;i++) fir[i]=0;
    29         for(ans=0,M=1;m;m--)
    30             scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,0);
    31         while(bfs()) ans+=dfs(1,INF,0);
    32         printf("%d
    ",ans);
    33     }
    34     return 0;
    35 }

    不要管long long,纯属发神经写上去的

  • 相关阅读:
    手打AC的第2道数位DP:BZOJ1799: [Ahoi2009]self 同类分布
    Oracle PL/SQL编程基础
    Oracle高级查询,事物,过程及函数
    缓存技术
    图形化报表
    网站配置与部署
    Oracle 空间管理
    Oracle 10g体系结构及安全管理
    ORACLE 数据库概述
    jQuery中的Ajax应用
  • 原文地址:https://www.cnblogs.com/wanglichao/p/5816634.html
Copyright © 2011-2022 走看看