标签:blog os io for 问题 div amp type
很裸的最大流问题,不过注意会有重边,o(╯□╰)o,被阴了WA了一发 还有就是要用long long
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
#include <string>
#include <iostream>
#include <map>
#include <cstdlib>
#include <list>
#include <set>
#include <queue>
#include <stack>
using namespace std;
typedef long long LL;
const int maxn = 205;
const int maxm = 205;
const int INF = INT_MAX / 2;
LL flow[maxn][maxn],C[maxn][maxn];
int n,m;
void input() {
memset(C,0,sizeof(C));
for(int i = 1;i <= m;i++) {
int a,b,c; scanf("%d%d%d",&a,&b,&c);
C[a][b] += c;
}
}
LL alpha[maxn];
int pre[maxn];
int q[maxn + 20],qs,qe;
void solve() {
int s = 1,t = n;
memset(flow,0,sizeof(flow));
while(1) {
for(int i = s + 1;i <= t;i++) pre[i] = -2;
pre[s] = -1;
qs = 0; qe = 1; q[qs] = s;
alpha[s] = 1e13;
while(qs < qe && pre[t] == -2) {
int v = q[qs]; qs++;
for(int i = s;i <= t;i++) {
if(pre[i] == -2 && C[v][i] - flow[v][i] != 0) {
alpha[i] = min(alpha[v],C[v][i] - flow[v][i]);
pre[i] = v;
q[qe++] = i;
}
}
}
if(pre[t] == -2) break;
for(int i = t;pre[i] != -1;i = pre[i]) {
flow[pre[i]][i] += alpha[t];
flow[i][pre[i]] = -flow[pre[i]][i];
}
}
LL ans = 0;
for(int i = s;i < t;i++) ans += flow[i][t];
printf("%lld\n",ans);
}
int main() {
while(scanf("%d%d",&m,&n) != EOF) {
input();
solve();
}
return 0;
}
POJ 1273 Drainage Ditches 最大流,布布扣,bubuko.com
标签:blog os io for 问题 div amp type
原文地址:http://www.cnblogs.com/rolight/p/3869683.html