Pagini recente » Cod sursa (job #3212535) | Cod sursa (job #2444373) | Cod sursa (job #349502) | Cod sursa (job #818316) | Cod sursa (job #2043284)
#include <bits/stdc++.h>
#define N 1003
using namespace std;
int n, m, t[N], C[N][N];
vector<int> G[N];
queue<int> Q;
int BFS()
{
int s;
Q.push(1);
while (!Q.empty())
{
s = Q.front();
Q.pop();
for (int x: G[s])
if (!t[x] && C[s][x] > 0)
{
t[x] = s;
Q.push(x);
}
}
return t[n];
}
int main()
{
freopen ("maxflow.in", "r", stdin);
freopen ("maxflow.out", "w", stdout);
int i, x, y, c;
scanf("%i%i", &n, &m);
for (i = 1; i <= m; i++)
{
scanf("%i%i%i", &x, &y, &c);
C[x][y] = c;
G[x].push_back(y);
G[y].push_back(x);
}
int flow = 0, w;
while (BFS())
{
for (int x: G[n])
{
w = C[x][n];
for (i = x; i != 1; i = t[i])
w = min(w, C[t[i]][i]);
for (i = x; i != 1; i = t[i])
C[t[i]][i] -= w, C[i][t[i]] += w;
flow += w;
C[x][n] -= w;
C[n][x] += w;
}
memset(t, 0, sizeof(t));
}
printf("%i", flow);
return 0;
}