码迷,mamicode.com
首页 > 其他好文 > 详细

【网络流】【Dinic】【最大流】bzoj3396 [Usaco2009 Jan]Total flow 水流

时间:2014-12-07 15:03:59      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   for   on   div   

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<queue>
 5 using namespace std;
 6 #define INF 2147483647
 7 #define MAXN 201
 8 #define MAXM 1501
 9 int v[MAXM],cap[MAXM],en,first[MAXN],next[MAXM];
10 int d[MAXN],cur[MAXN];
11 queue<int>q;
12 int m,S,T,W;
13 char U[1],V[1];
14 void Init_Dinic(){memset(first,-1,sizeof(first)); en=0; S=A; T=Z;}
15 void AddEdge(const int &U,const int &V,const int &W)
16 {v[en]=V; cap[en]=W; next[en]=first[U]; first[U]=en++;
17 v[en]=U; next[en]=first[V]; first[V]=en++;}
18 bool bfs()
19 {
20     memset(d,-1,sizeof(d)); q.push(S); d[S]=0;
21     while(!q.empty())
22       {
23         int U=q.front(); q.pop();
24         for(int i=first[U];i!=-1;i=next[i])
25           if(d[v[i]]==-1 && cap[i])
26             {
27               d[v[i]]=d[U]+1;
28               q.push(v[i]);
29             }
30       }
31     return d[T]!=-1;
32 }
33 int dfs(int U,int a)
34 {
35     if(U==T || !a) return a;
36     int Flow=0,f;
37     for(int &i=cur[U];i!=-1;i=next[i])
38       if(d[U]+1==d[v[i]] && (f=dfs(v[i],min(a,cap[i]))))
39         {
40           cap[i]-=f; cap[i^1]+=f;
41           Flow+=f; a-=f; if(!a) break;
42         }
43     if(!Flow) d[U]=-1;
44     return Flow;
45 }
46 int max_flow()
47 {
48     int Flow=0,tmp=0;
49     while(bfs())
50       {
51         memcpy(cur,first,sizeof(cur));
52         while(tmp=dfs(S,INF)) Flow+=tmp;
53       }
54     return Flow;
55 }
56 int main()
57 {
58     scanf("%d",&m); Init_Dinic();
59     for(int i=1;i<=m;++i)
60       {
61           scanf("%s%s%d",U,V,&W);
62           AddEdge(U[0],V[0],W);
63       }
64     printf("%d\n",max_flow());
65     return 0;
66 }

【网络流】【Dinic】【最大流】bzoj3396 [Usaco2009 Jan]Total flow 水流

标签:style   blog   io   ar   color   sp   for   on   div   

原文地址:http://www.cnblogs.com/autsky-jadek/p/4149361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!