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

最大流模板

时间:2018-04-18 23:33:16      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:pac   pen   main   code   inf   col   href   define   ++   

题目:http://hihocoder.com/problemset/problem/1369

题目对最大流介绍的还不错的。

模板题,记个模板:

 1 #include "iostream"
 2 #include "memory.h"
 3 #include "stdlib.h"
 4 #include "queue"
 5 #include "algorithm"
 6 using namespace std;
 7 #define inf 0x3fffffff
 8 int N, M;
 9 int pic[505][505], flow[505], path[505];
10 queue<int> s;
11 
12 int bfs(){
13     int i, t;
14     memset(path, -1, sizeof(path));
15     memset(flow, 0, sizeof(flow));
16     while(!s.empty()) s.pop();
17     s.push(1);
18     flow[1] = inf;
19     while(!s.empty()){
20         t = s.front();
21         s.pop();
22         for(i = 2; i <= N; i++){
23             if(pic[t][i]>0 && path[i] == -1){
24                 flow[i] = min(pic[t][i], flow[t]);
25                 s.push(i);
26                 path[i] = t;
27                 if(i == N) return flow[N];
28             }
29         }
30     }
31     if(!flow[N]) return 0;
32     return flow[N];
33 }
34 void EK(){
35     int add, maxflow, now;
36     maxflow = 0;
37     while(add = bfs()){
38         maxflow += add;
39         now = N;
40         while(now != 1){
41             pic[path[now]][now] -= add;
42             pic[now][path[now]] += add;
43             now = path[now];
44         }
45     }
46     cout<<maxflow<<endl;
47 }
48 int main(){
49     //freopen("test.txt", "r", stdin);/////////// 
50     int c, u, v;
51     while(cin>>N>>M){
52         memset(pic, 0, sizeof(pic));
53         for(int i = 0 ;i < M; i++){
54             cin>>u>>v>>c;
55             pic[u][v] += c;
56         }
57         EK();
58     }
59     return 0;
60 } 

 

最大流模板

标签:pac   pen   main   code   inf   col   href   define   ++   

原文地址:https://www.cnblogs.com/zUotTe0/p/8877986.html

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