首页 > 其他 > 详细

洛谷 P2740 [USACO4.2]草地排水Drainage Ditches

时间:2017-04-16 18:56:15      阅读:215      评论:0      收藏:0      [点我收藏+]

题目:https://www.luogu.org/problem/show?pid=2740

网络流板题,用dinic水过。

懒得用vector了2333333

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<vector>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<cstring>
 7 using namespace std;
 8 
 9 const int maxn=210;
10 const int inf=0x7f;
11 
12 int n,m;
13 int u,v,w;
14 int G[maxn][maxn];
15 int dis[210];
16 int cur[210];
17 queue<int> q;
18 
19 bool bfs() {
20     memset(dis,-1,sizeof(dis));
21     while (!q.empty()) q.pop();
22     dis[1]=0;
23     q.push(1);
24     while (!q.empty()) {
25         int x=q.front();
26         q.pop();
27         for (int i=1; i<=m; ++i) {
28             if (dis[i]==-1&&G[x][i]>0) {
29                 dis[i]=dis[x]+1;
30                 if(i==m) return true;
31                 q.push((i));
32             }
33         }
34     }
35     return false;
36 }
37 
38 
39 int dfs(int x,int a) {
40     if (x==m) return a;
41     int f=0,i;
42     for (i=1; i<=m; ++i) {
43         if(dis[i]==dis[x]+1&&G[x][i]>0&&(f=dfs(i,min(a,G[x][i])))) {
44             G[x][i]-=f;
45             G[i][x]+=f;
46             return f;
47         }
48     }
49     return false;
50 }
51 
52 
53 
54 int max_flow() {
55     int flow=0;
56     while (bfs()) flow+=dfs(1,inf);
57     return flow;
58 }
59 
60 int main() {
61     scanf("%d%d",&n,&m);
62     for (int i=1; i<=n; ++i) {
63         scanf("%d%d%d",&u,&v,&w);
64         G[u][v]+=w;
65     }
66     cout<<max_flow();
67     return 0;
68 }
戳我>_<

骗分真神奇,暴力出奇迹。

技术分享

 

(纪念F8) 

洛谷 P2740 [USACO4.2]草地排水Drainage Ditches

原文:http://www.cnblogs.com/gjc1124646822/p/6719516.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!