Pagini recente » Cod sursa (job #3261278) | Cod sursa (job #36205) | Cod sursa (job #3148907) | Cod sursa (job #618206) | Cod sursa (job #3261695)
#include <bits/stdc++.h>
using namespace std;
ifstream in("maxflow.in");
ofstream out("maxflow.out");
const int inf = (int)1e9;
int N,M,capacitate[1005][1005],flux_trimis[1005][1005],ans;
bool ok = true,b[1005];
void dfs (int node,int& mn) {
//cout << node << ' ';
b[node] = true;
if (node == N) {
//cout << mn << '\n';
ans += mn;
ok = true;
return;
}
for (int i = 1; i <= N;++i)
if ((capacitate[node][i] - flux_trimis[node][i] > 0) && b[i] == false) {
int d = capacitate[node][i] - flux_trimis[node][i];
mn = min(mn,d);
dfs(i,mn);
if (ok) {
flux_trimis[i][node] += -mn;
flux_trimis[node][i] += mn;
return;
}
}
}
int main(){
in >> N >> M;
while (M--) {
int u,v,c; in >> u >> v >> c;
capacitate[u][v] = c;
}
while (ok) {
ok = false;
int mn = inf;
dfs(1,mn);
for (int i = 1; i <= N;++i)
b[i] = 0;
}
out << ans;
return 0;
}