Pagini recente » Cod sursa (job #1894680) | Cod sursa (job #448527) | Cod sursa (job #1387122) | Cod sursa (job #731775) | Cod sursa (job #1698151)
# include <bits/stdc++.h>
using namespace std;
# define x first
# define y second
# define ll long long
# define db long double
int F[1 << 10][1 << 10];
int From[1 << 10];
int bfs(int n)
{
queue < int > Q;
Q.push(1);
From[1] = 0;
for (int i = 2;i <= n;++i) From[i] = -1;
while (!Q.empty())
{
int node = Q.front();
Q.pop();
for (int i = 1;i <= n;++i)
if (From[i] == -1 && F[node][i])
{
Q.push(i);
From[i] = node;
}
}
if (From[n] == -1) return 0;
int flow = 1e9;
for (int cnt = n;cnt != 1;cnt = From[cnt]) flow = min(flow,F[From[cnt]][cnt]);
for (int cnt = n;cnt != 1;cnt = From[cnt]) F[From[cnt]][cnt] -= flow,F[cnt][From[cnt]] += flow;
return flow;
}
int main(void)
{
ifstream fi("maxflow.in");
ofstream fo("maxflow.out");
int n,m;
fi>>n>>m;
while (m --)
{
int a,b,c;
fi>>a>>b>>c;
F[a][b] += c;
}
int flow = 0,cnt;
while ((cnt = bfs(n)) != 0) flow += cnt;
fo << flow << '\n';
return 0;
}