Pagini recente » Cod sursa (job #1112392) | Cod sursa (job #1509152) | Cod sursa (job #2718348) | Cod sursa (job #818178) | Cod sursa (job #2940863)
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define bminify(a,b)a=bmin(a,b)
#define bmaxify(a,b)a=bmax(a,b)
#define forq(i,ii,n)for(i=ii;i<n;i++)
using namespace std;
typedef long long ll;
ifstream in("maxflow.in");
ofstream out("maxflow.out");
#define mod 1000000007
#define t 131072
int n,m,i,j,k,l,u,s,p[1001],c[1003][1003],f[1003][1003],q[1003]={1};vector<int>v[100001];bitset<1001>b;
inline bool bfs()
{
b.reset();
b[1]=1,u=l=0;
while(u<=l)
{
i=q[u++];
if(i==n)return 1;
for(auto j:v[i])
{
if(b[j]==0&&f[i][j]!=c[i][j])
q[++l]=j,b[j]=1,p[j]=i;
}
}
return 0;
}
int main()
{
in.tie(nullptr),out.tie(nullptr);
in>>n>>m;
while(m--)
in>>i>>j>>k,v[i].push_back(j),v[j].push_back(i),c[i][j]=k;
while(bfs())
{
for(auto i:v[n])
if(b[i]&&c[i][n]!=f[i][n])
{
m=INT_MAX,k=n,p[n]=i;
while(k!=1)
bminify(m,c[p[k]][k]-f[p[k]][k]),k=p[k];
k=n,s+=m;
while(k!=1)
f[p[k]][k]+=m,f[k][p[k]]-=m,k=p[k];
}
}
out<<s;
}